• day17


    集合:新的容器,只用来装对象,不能用来装基本数据类型的数据
       集合比数组
      (1)类型更丰富,它有各种特征的集合
      (2)无需程序员来编写“扩容”等代码,也不用通过"total"来记录实际的元素的个数
      分为两大类:
      (1)Collection:存储一组对象,单身party
      (2)Map:存储“映射关系”的,存储“键值对” (key,value),情侣party,家庭party
        Collection:最常用的两个子接口
        List:有序(添加的顺序)的可重复的
        Set:无序(添加的顺序)的不可重复

    java.util.Collection:接口
       JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现
       1、添加
         boolean add(Object obj)
         boolean addAll(Collection other):
         当前集合 = 当前集合  ∪  other集合
       2、删除
         boolean remove(Object o)  
         boolean removeAll(Collection other) 
         当前集合 = 当前集合  - (当前集合 ∩ other)
         void clear() 
       3、修改(没有提供)
       4、查找:
        boolean contains(Object o)  
        boolean containsAll(Collection c) 
        判断c集合是否是当前集合的子集
        boolean isEmpty() 
       5、获取元素的个数
         int size() 
       6、排序(没有提供)
         没有提供的原因,某些集合自带排序功能,而且Collections工具类有排序功能
       7、遍历
         Iterator<E> iterator() :获取集合自身的迭代器,用于遍历集合用的
         Object[] toArray() 
       8、求两个集合的交集
         boolean retainAll(Collection<?> c)  
         当前集合 = 当前集合 ∩ other

    java.util.Iterator接口:
      (1)boolean hasNext() :是否有下一个元素需要迭代
      (2)Object next() :取出下一个元素
      (3)void remove() :删除刚刚迭代的元素

     java.util.List:
        有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。
        用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
        List是Collection的子接口,那么Collection中的方法它也有。
        List增加了Collection接口没有的方法,和索引位置相关的方法:
       1、添加
         boolean add(Object obj):List系列的,默认添加到最后
         boolean addAll(Collection other):List系列的,默认添加到最后
         boolean add(int index ,Object obj):在指定位置index处,插入一个元素obj
         boolean add(int index, Collection other):在指定位置index处,插入多个元素,other中的多个元素
      2、删除
         boolean remove(Object o)  
         boolean removeAll(Collection other) 
         void clear() 
         Object remove(int index):删除指定位置index的元素,删除的同时还返回了该元素,如果需要就接收,不需要就不接收。
      3、修改(有提供)
         Object set(int index, Object element) :替换集合index位置的元为element,返回被替换的旧元素 
      4、查找:
         boolean contains(Object o)  
         boolean containsAll(Collection c) 
         判断c集合是否是当前集合的子集
         boolean isEmpty() 
          int indexOf(Object o)  
          int lastIndexOf(Object o)  
          Object get(int index) 
       5、获取元素的个数
          int size() 
       7、遍历
          Iterator<E> iterator() :获取集合自身的迭代器,用于遍历集合用的
         Object[] toArray() 
         增加了:
          ListIterator<E> listIterator():
          ListIterator和Iterator有什么不同?
          Iterator只能从前往后遍历,而ListIterator可以从任意位置从前往后,从后往前。
       8、截取列表的一部分
          List<E> subList(int fromIndex, int toIndex)

    java.util.List接口的实现类有:
        java.util.ArrayList:动态数组
        java.util.Vector:动态数组
        java.util.LinkedList:链表
        java.util.Stack:栈
        ArrayList和Vector:
        Vector:是旧版本,线程安全的,扩容机制为原来的2倍,支持旧版的Enumeration迭代器
        ArrayList:是新版本,线程不安全的,扩容机制为原来的1.5倍,不支持Enumeration迭代器

       ArrayList只用:foreach和Iterator或ListIterator
         只看,不改:foreach
         看,并且删除:从前往后:Iterator
         看,并且删除、插入,从前往后,或从后往前:ListIterator


        动态数组与LinkedList区别:底层的物理结构不同:
        动态数组底层的实现是数组;
        优点:可以根据索引快速的遍历和查找元素
        缺点:长度不够,需要扩容,影响性能
                    删除后,要移动元素,并且空出大量的空间,浪费空间   需要开辟连续的存储空间
       LinkedList是链表结构。
        优点:有几个元素,占几个空间,不需要连续的空间    添加时,不需要扩容    删除:只要修改前后元素的关系就可以,和其他元素无关,无需移动
        缺点:无法索引快速定位,如果要按索引操作,效率比较低,从头遍历

  • 相关阅读:
    助理需要看的书
    linux 磁盘管理以及维护
    转:工作与创业区别
    《编写可读代码的艺术》---把控制流变得可读
    Visual studio插件 Reshaper--- 常用快捷键
    为啥我喜欢在Windows 7环境下做Unity开发?
    《编写可读代码的艺术》---写出言简意赅的注释
    《编写可读代码的艺术》---该写什么样的注释
    《编写可读代码的艺术》---美观代码
    《编写可读代码的艺术》---不会误解的名字
  • 原文地址:https://www.cnblogs.com/zzz222zzz/p/11628320.html
Copyright © 2020-2023  润新知