Java_Collection

2020-04-03  本文已影响0人  老北瓜

Collection 集合
集合用来干啥 : 是java中提供的一种容器,用来存储多个数据

数组和集合的区别

~~数组的长度是固定的,集合的长度是可变的
~~数组可以存储基本类型 ,也可以存储对象。 集合存储的都是对象

      String[] strArr = new String[3];
      int[] intArr = new int[5];

      /**
       *  这里只可以存入对象 
       *   int 不行 , 只能是 int 对应的 包装类  Integer
       */
      ArrayList<Integer> aL = new ArrayList();

集合框架

1,会使用集合存储数据
2,会遍历集合
3,掌握集合特性

ArrayList集合 LinkedList集合 Vector集合
HashSet集合 LinkedHashSet集合 TreeSet集合

List 接口 :

有序的集合 (存储和取出元素顺序相同)
允许存储重复的元素
有所有关,可以使用普通for循环遍历
    ArrayList : 底层是数组实现,查询快 增删慢
    LinkedList : 底层是链表实现的,查询慢,增删快

Set接口 :

不允许存储重复元素
没有索引,不能使用普通for循环
  HashSet: 底层是哈希表 +(红黑树)实现,无索引,不可以存储重复元素,存取无序
  LinkedHashSet: 底层是哈希表+链表实现,无索引,不可以存储重复元素,可以保证存储顺序
 TreeSet: 底层是二叉树实现,一般用于排序

(List接口和 Set 接口向上抽取)Collection 接口 :

单列集合顶层接口
Collection 中的共性方法
add(), remove(),clear(),contains(),isEmpty(), size(), toArray()

迭代器 Iterator 接口

通用的取出集合中元素的方法 。 取出元素之前先判断集合中有没有元素,有就取出来,接着判断集合中有没有元素,还有接着取,知道全部取出。
Collection接口中有一个方法 iterator() 返回的就是迭代器的实现类对象
常用方法 : hasNext() next()

  /**
         * 使用步骤: 
         *      1, 通过 集合的iterator()获取  实现类对象
         *      2, Iterator.hasNext() 判断还有没有下一个元素
         *      3,Iterator.next()取出集合中的下一个元素
         */
        Collection<String> coll = new ArrayList<>();
        coll.add("二狗");
        coll.add("三狗");
        coll.add("四狗");
        coll.add("五狗");
        coll.add("六狗");

        Iterator<String> iterator = coll.iterator();
        // 不知道多少个元素 ,  知道循环条件,使用while循环
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(next);
        }
      // 或者使用 for循环
        for (Iterator<String> it = coll.iterator(); it.hasNext(); ) {
            System.out.println(it.next());
        }

有几个元素就调用几次 hasNext() 判断, 直到取完。

增强for循环

专门那俩遍历数组和集合的,内部其实也是一个迭代器,遍历过程中不能进行增删操作 ,简化了 迭代器的书写
 ArrayList<String> coll = new ArrayList<String>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");

        /**
         *  格式   for(数据类型 变量名 :  集合名)
         */
        for (String c :coll){
            System.out.println(c);
        }

List集合

有序 , 有索引 , 允许重复
特有的带 索引的几种方法 
遍历的方法  普通 for循环 ,迭代器,增强for 循环

#####ArrayList
  大小可变的数组的集合,不是同步的 ,也遵循数组查询快,增删慢。 实际开发中如果查询的需求较多,可以使用ArrayList,如果增删多,效率较低。
 #####LinkedList 
    链表的实现,查询慢,增删快,也是异步的。
    包含了大量操作收尾元素的方法,如果使用了多态不能使用LinkedList特有的方法。
    特有的几个方法:

#####Vector
      相当于一个同步的 ArrayList =======;

Set集合

  不能重复 ,没有索引,所以不能使用普通for循环遍历 

  #####HashSet特点  
    不允许存储重复的元素
    没有索引,没有索引的方法,就不能使用普通for循环遍历了
    是一个无序的集合,存取的顺讯可能不一致
    底层是一个哈希表结构,查询时速度非常快
  
  #####哈希表
    哈希值是一个十进制整数,有系统随机给出(就是对象的地址值,是一个逻辑地址)
    哈希表 = 数组 + 链表
上一篇 下一篇

猜你喜欢

热点阅读