• 集合类


    一、集合类概述
    集合与数组的不同之处:
      1. 数组长度是固定的,集合的长度是可变的
      2. 数组用来存放基本类型的数据,集合用来存放对象的引用
    常用的集合有List集合、Set集合和Map集合,其中List与Set继承了Collection接口,详见图“常用集合类的继承关系”
     
    二、Collection接口
    • Collection接口是层次结构中的根接口。构成Collection的单位称为元素。Collection接口通常不能直接使用,但该接口提供了添加元素、删除元素、管理数据的方法。由于List接口与Set接口都继承了Collection接口,因此这些方法对List与Set集合是通用的。
    //Collection接口的常用方法
    add();
    remove();
    isEmpty();
    iterator();
    size();
    • 如何遍历集合中的每个元素?通常遍历集合,都是通过迭代器(Iterator)来实现。迭代出来的元素都是原来集合元素的拷贝。Java集合中保存的元素实质是对象的引用,而非对象本身。
    public static void main(String[] args) {
        Map <String,String>map = new HashMap<>();
        map.put("熊大", "棕色");
        map.put("熊二", "黄色");
     
        Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();
        while(entries.hasNext()){
            Map.Entry<String, String> entry = entries.next();
            System.out.println(entry.getKey() + ":" + entry.getValue()); //熊大:棕色
        }
     
        Collection<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
     
        Iterator<String> it = list.iterator();
        while(it.hasNext()){    //判断是否有下一个元素
            System.out.println(it.next());  //获取集合中元素(对象)并输出
        }
    }
     
    三、List(列表)
    • List的特征是其元素以线性方式存储,集合中可以存放重复对象。
    • List接口继承了Collection接口,包含其中的所有方法,此外List接口还定义了以下两个非常重要的方法:
      1. get(int index);    //获得指定索引位置的元素
      2. set(int index, Object obj);    //指定索引位置对象为指定对象
    • List接口的常用实现类有ArrayList与LinkedList
      1. ArrayList类实现了可变数组,允许保存所有元素,包括null。
        1. 优点:可以根据索引位置对集合进行快速随机访问,
        2. 缺点:向指定的索引位置插入对象或删除对象速度较慢。
      2. LinkedList类采用链表结构保存对象,
        1. 优点:向集合中插入、删除对象时,使用LinkedList类实现的List集合效率较高,
        2. 缺点:但对于随机访问集合中的对象,使用LinkedList类实现List集合效率较低。
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
     
        int i = (int)(Math.random()*list.size());
        System.out.println(list.get(i)); //输出随机值
        list.remove(i); //移除元素
     
        for (int j = 0; j < list.size(); j++){
            System.out.println(list.get(j)); //输出
        }
    }
    • 将字符串转为List集合
    String str = "aaa,bbb,ccc";
    List<String> list = Arrays.asList(str.split(","));
     
    四、Set(集合)
    • Set是最简单的一种集合。集合中的对象不按特定的方式排序(存入与取出的顺序不一定相同),集合中没有重复对象(可以用来去重)。
    • Set接口继承了Collection接口,包含其中的所有方法
    • Set接口常用的实现类有HashSet 和 TreeSet
      • HashSet类
      • TreeSet类
    public static void main(String[] args) {
        Set set = new HashSet();
        set.add("世界军事");
        set.add("兵器知识");
        set.add("兵器知识");
        set.add("舰船知识");
        set.add("汉和防务");
     
        Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next()); //Set 集合存和取的顺序不一致。
        }
    }
     
    五、Map(映射)
    • Map接口常用的实现类有HashMap和TreeMap
      1. HashMap类
      2. TreeMap类
    Map接口中的常用方法
    put();
    containsKey();
    containsValue();
    get();
    keySet();    //返回该集合中所有Key对象形成的Set集合
    values();    //返回该集合中所有值对象形成的Collection集合
     
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("01","aaa");
        map.put("02","bbb");
     
        Set<String> set = map.keySet();
        Iterator<String> it = set.iterator();
     
        while (it.hasNext()) {
            System.out.println(it.next());
        }
     
        Collection <String> coll = map.values();
        it = coll.iterator();
     
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
     
    六、CollectionUtils(Java集合类工具)的操作方法
    • 集合判断
    //例1: 判断集合是否为空:
    CollectionUtils.isEmpty(null): true
    CollectionUtils.isEmpty(new ArrayList()): true
    CollectionUtils.isEmpty({a,b}): false
     
    //例2: 判断集合是否不为空:
    CollectionUtils.isNotEmpty(null): false
    CollectionUtils.isNotEmpty(new ArrayList()): false
    CollectionUtils.isNotEmpty({a,b}): true
    • 2个集合间的操作
    //2个集合间的操作:
    //集合a: {1,2,3,3,4,5}
    //集合b: {3,4,4,5,6,7}
     
    CollectionUtils.union(a, b)(并集): {1,2,3,3,4,4,5,6,7}
    CollectionUtils.intersection(a, b)(交集): {3,4,5}
    CollectionUtils.disjunction(a, b)(交集的补集): {1,2,3,4,6,7}
    CollectionUtils.disjunction(b, a)(交集的补集): {1,2,3,4,6,7}
    CollectionUtils.subtract(a, b)(A与B的差): {1,2,3}
    CollectionUtils.subtract(b, a)(B与A的差): {4,6,7}
     
     
  • 相关阅读:
    [moka同学笔记]一、Yii2.0课程笔记(魏曦老师教程)
    [moka同学笔记]yii2.0导航栏
    [moka同学笔记]Yii2.0 dropDownList的使用(二)
    [moka同学笔记]Yii2.0验证码
    [moka同学摘录]Yii2 csv数据导出扩展
    [moka同学笔记]PHPexcel之excel导出和导入
    [moka同学代码]PHP初级知识:上传文件源码
    [moka同学摘录]在Centos 6.5下成功安装和配置了vim7.4
    [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存
    [moka同学笔记]linux服务器防火墙的设置
  • 原文地址:https://www.cnblogs.com/duomen/p/13244964.html
Copyright © 2020-2023  润新知