音乐播放器
琢钰
 
文章 标签
12

Powered by X2 | Theme: Fog
载入天数...
载入时分秒...
总访问量:  |   访问人数:
御风飞行中...

总复习05-集合

  热度: loading...

集合

img
集合和数组的区别:
  • 数组的长度是固定的,集合的长度是可变的。
  • 集合中存储的元素是引用数据类型,集合也叫做“对象容器”,可以是基本数据类型的包装类,也可以是其他复合数据类型。
  • Java API 中定义好的一系列关于集合的类和接口放在 java .util 包中。

Collection

Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是List和Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有ArrayList和LinkedList,Set接口的主要实现类有HashSet和TreeSet。

img

ArrayList遍历:

  	1. 普通for循环
  	2. 增强for循环
  	3. 迭代器
  • Collection和Collections的区别

    java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
    而java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。

  • Arrays工具类

  • LinkedList

    LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。

    • LinkedList<-->ArrayList 通过构造方法和addAll方法转换

              LinkedList linkedList = new LinkedList();
              ArrayList arrayList = new ArrayList();
              linkedList.add(arrayList);
              ArrayList arrayList1 = new ArrayList(linkedList);
              LinkedList linkedList1 = new LinkedList(arrayList);
      

Set

set是无序(存取顺序不同)且不能重复的

set遍历不能用普通for循环,需要用增强for循环和迭代器

  • HashSet

    1. 元素唯一,无序,不能重复
    2. 底层结构是哈希表结构
    3. 元素的存与取的顺序不能保证一致
  • LinkedHashSet

    1. 元素唯一,有序,不能重复
    2. 底层结构是 哈希表结构 + 链表结构, 由链表保证元素有序,由哈希表保证元素唯一
    3. 元素的存与取的顺序一致
  • TreeSet

    底层数据结构是红黑树.

Map

QQ图片20200623025012

HashMap集合

键是哈希表结构,可以保证键的唯一性。

往map里放数据,遇到相同Key后面的会把前面的覆盖.

  • Map集合遍历

    1. 根据键找值。获取所有键的集合,遍历键的集合,获取到每一个键,根据键找值。

    2. 根据键值对对象找键和值。

      • 获取所有键值对对象的集合
      • 遍历键值对对象的集合,获取到每一个键值对对象
      • 根据键值对对象找键和值
    3. 直接输出值

       Collection<E> values = map.values();遍历values
      
  • LinkedHashMap 接口的哈希表和链接列表的实现类,具有可预知的迭代顺序。

TreeMap集合

TreeMap类;可排序;两个构造器; a)无参构造器;元素所在类必须实现Comparable接口; b)带有临时比较器的构造器;临时实现Comparator接口;

HashTable集合

HashMap:无序存放,新的操作类,key不允许重复,采用异步处理方式,性能更高,属于非线程安全的操作类。 Hashtable:无序存放,旧的操作类,key不允许重复,采用同步处理方式,性能更低,属于线程安全的操作类。

Map接口和Collection接口的不同 1、Map是双列的,Collection是单列的 2、Map的键唯一,Collection的子类Set集合的值是不重复的,每个值是唯一的 3、Map集合的数据结构值针对键有效,跟值无关 4、Collection集合的数据结构是针对元素有效

泛型

泛型只能使用复合数据类型,泛型引用和创建两端,给出的泛型变量必须相同。

  • 定义

    • 泛型类定义

      泛型类中使用泛型

      • 成员类型
      • 返回值和参数类型
      • 局部变量的引用上
      Class<T> type
      
    • 把泛型定义在方法上

      public <T> T add(T x, T y){ 
      }
      
    • 泛型接口

      public interface 接口名<泛型类型1…>
      

    子类的泛型个数>=父类的泛型个数

    继承过来的泛型可以不写吗?可以,泛型擦除,变成Object类型

PECS原则

  1. “?”不能添加元素
  2. “? extends T”也不能添加元素
  3. “? super T”能添加元素