java中的集合理解

何须浅碧深红色,自是花中第一流。

目录

集合

集合的概念:

Java集合框架包含的内容

List接口的实现类

ArrayList常用方法

LinkedList常用方法

Set接口:

Map接口:

写出遍历集合的方法

总结:


集合

集合的概念:

java集合框架提供了一套性能优良,使用方便的接口和类,他们位于java.util包中。

Java集合框架包含的内容

  • Collection 接口存储一组不唯一,无序的对象

  • List 接口存储一组不唯一(可重复)、有序(插入顺序)的对象

    • ArrayList:底层是长度可变的数组,查询和遍历元素效率高

    • LinkedList:底层是链表,插入元素和删除元素效率高

  • Set 接口存储一组唯一(不可重复)、无序的对象

    • HashSet

  • Map接口存储一组键值对象,键唯一、值不唯一,提供key到value的映射

    • HashMap

List接口的实现类

  • ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高

  • LinkedList采用链表存储方式,插入、删除元素时效率比较高

ArrayList常用方法

方法名说明
boolean add(Object o)在列表的末尾顺序添加元素,起始索引位置从0开始
void add(int index,Object o)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间
int size()返回列表中的元素个数
Object get(int index)返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换
boolean contains(Object o)判断列表中是否存在指定元素
boolean remove(Object o)从列表中删除元素
Object remove(int index)从列表中删除指定位置元素,起始索引位置从0开始

LinkedList常用方法

方法名说明
void addFirst(Object o)在列表的首部添加元素
void addLast(Object o)在列表的末尾添加元素
Object getFirst()返回列表中的第一个元素
Object getLast()返回列表中的最后一个元素
Object removeFirst()删除并返回列表中的第一个元素
Object removeLast()删除并返回列表中的最后一个元素

Set接口:

  • Set接口存储一组唯一,无序的对象

  • HashSet是Set接口常用的实现类

  • Set中存放对象的引用

Set set=new HashSet();
String s1=new String("java");
String s2=s1;
String s3=new String("JAVA");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());

Set接口如何判断加入对象是否已经存在呢?

Set set=new HashSet();
String s1=new String("java");
String s2=s1;
String s3=new String ("java");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());

HashSet是Set接口常用的实现类

Set newsTitleSet = new HashSet();
NewTitle car = new NewTitle(1, "汽车", "管理员");
//增加元素
newsTitleSet.add(car);
//获取元素个数
System.out.println("新闻标题数目为:" + newsTitleList.size() + "条");

Map接口:

Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作

注:最常用的实现类是HashMap

Map接口常用方法:

方法名说明
Object put(Object key, Object val)以“键-值”对的方式进行存储
Object get(Object key)根据键返回相关联的值,如果不存在指定的键,返回null
Object remove(Object key)删除由指定的键映射的“键-值对”
int size()返回元素个数
Set keySet()返回键的集合
Collection values()返回值的集合
boolean containsKey(Object key)如果存在由指定的键映射的“键-值对”,返回true

写出遍历集合的方法

  • List集合:普通for循环、增强for循环、迭代器

  • Set集合:增强for循环、迭代器

  • Map集合:增强for循环、迭代器、键值对遍历

    public static void main(String[] args) {
        // 准备容器,创建HashMap对象
        Map hm = new HashMap(); 
        // 准备元素并将元素存储到集合中
        hm.put("CN", "中华人民共和国");
        hm.put("JP", "日本");
        hm.put("RU", "俄罗斯联邦");
        hm.put("USA", "美国");
        hm.put("UK", "英国");
    ​
        // 获取集合中元素个数
        System.out.println(hm.size());
    ​
        // 根据键获取对应的值
        Object obj1 = hm.get("CN");
        String str1 = (String) obj1;
        System.out.println(str1);
        System.out.println(hm.get("CNN"));// null
    ​
        // 删除集合中的元素
        Object obj2 = hm.remove("JP");
        String str2 = (String) obj2;
        System.out.println(str2);
        System.out.println(hm.size());
    ​
        System.out.println("********************************************");
    ​
        // 获取HashMap集合中所有键值对的键
        Set keys = hm.keySet();
        for (Object object : keys) {
            String key = (String) object;
            System.out.println(key);
        }
    ​
        System.out.println("********************************************");
    ​
        // 获取HashMap集合中键值对的值
        Collection values = hm.values();
        for (Object object : values) {
            String balue = (String) object;
            System.out.println(values);
        }
    ​
        // 查询集合中是否存在指定键对应的键值对
        System.out.println("RU");// true
        System.out.println("JP");// false
    ​
        System.out.println("*********************************************");
        // 遍历键值对的三种方式
        // 方式一:获取键的集合,然后在遍历键的集合过程中调用get()方法取值
        Set keys2 = hm.keySet();
        for (Object object : keys2) {
            // 获得键
            String key = (String) object;
            // 根据键获取值
            Object obj = hm.get(key);
            String value = (String) obj;
            System.out.println(key + "---" + value);
        }
        System.out
                .println("**************************************************");
        // 方式二、获取键的集合,然后在遍历键的集合过程中调用get()方法取值
        Set keys3 = hm.keySet();
        Iterator it = keys3.iterator();
        while (it.hasNext()) {
            // 获得键
            Object object = it.next();
            String key = (String) object;
            // 根据键获取值
            Object obj = hm.get(key);
            String value = (String) obj;
            System.out.println(key + "---" + value);
        }
        System.out.println("***************************************");
    ​
        /*
         * 方式三、键值对遍历,将hm集合中的键值对整体取出来后放入到Set集合中
         * 
         * 使用entrySet()方法将hm集合中的键值对整体取出来嵌在Set集合中
         * 然后使用增强for循环或者迭代器取出Set集合中的键值对元素,取出来的是Object类型,实际上键值对的真正类型是Map.Entry类型
         * 所以将取出来的元素强制转换为Map
         * .Entry类型,Map.Entry类中有getKey()方法获取键值对的键,有getValue()方法获取键值对的值
         */
        Set keyValues = hm.entrySet();
        for (Object object : keyValues) {
            Map.Entry me = (Map.Entry) object;
            // 获取键
            Object object1 = me.getKey();
            String key = (String) object1;
            // 获取值
            Object object2 = me.getValue();
            String value = (String) object2;
            System.out.println(key + "---" + value);
    ​
        }
    }

总结:

变量:存储数据的空间(装数据的容器),变量中只能存储一个数据,通过操作变量名来操作数据 数组:存储数据的空间(装数据的容器),数组中可以存储多个相同类型的数据,通过数组名+下标来操作数据 对象(类):存储数据的空间(装数据的容器),通过对象的属性达到存储数据的目的,通过对象名.属性名或者通过对象名.getXxx()/setXxx()方法来获取和设置数据 集合:存储数据的空间(装数据的容器),集合中可以存储多个不同类型的数据(系统会将不同类型的数据向上转型变为Object类型),通过集合对象.方法来操作数据

综上所述:凡是能够装数据的,都可以看成是容器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值