Java中的集合框架

  • 1.  与数组的对比——为何选择集合而不是数组
    (1)数组的长度固定,集合长度可变
    (2)数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象。
    Java中的集合框架
  • 2.Collection接口
    (1)是List、Set、Queue接口的父接口
    (2)定义了可用于操作List、Set和Queue的方法——增删改查
  • 3.List接口及其实现类——ArrayList
    (1)List是元素有序并且可以重复的集合,被称为序列
    (2)List可以精确的控制每个元素的插入位置,或删除某个位置元素
    (3)ArrayList——数组序列,是List的一个重要实现类
    (4)ArrayList底层是由数组实现的
    (5)常用方法:add()addAll()remove(int index)set(int index, E element) get()size()
    (6)注意事项:对象存入集合都变成Object类型,取出时需要类型转换。
    (7)数组转list:  Arrays.asList()
    (8)泛型
    集合中的元素,可以是任意类型的对象(确切的说:是“对象的引用”):如果把某个对象放入集合,则会忽略它的类型,而把它当做Object处理。
    泛型则是规定了某个集合只可以存放特定类型的对象:会在编译期间进行类型检查,可以直接按指定类型获取集合元素。
    泛型集合可以添加泛型对象实例,也可以添加泛型子类型的对象实例;泛型不能是基本类型(byte,short,int,long,float,double,boolean,char等),必须是引用类型(String类型不是基本类型,它实际上是被final修饰);如果要使用基本类型,泽需要通过使用其包装类(如:Integer,Float,Boolean等)实现。
  • Set接口及其实现类——HashSet
    (1)Set是元素无序并且不可以重复的结合,被称为“集”
    (2)HashSet——哈希集,是Set的一个重要实现类
    (3)Set中,添加某个对象,无论添加多少次,最终只会保留一个该对象(的引用)。并且,保留的是第一次添加的那个。
    (4)Set中可以添加null
  • Map接口及其实现类——HashMap
    (1)常用方法:put(K key, V value) remove(Object key) size()values()keySet() entrySet()
    (2)HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现;HashMap中的Entry对象是无序排列的;Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)
    (3)通过keySet() entrySet() 来遍历Map中的数据。
  • Collections工具类
    (1)泛型为整数型包装类或者String类型,可以直接调用Collections.sort()方法进行比较。
    (2)泛型为其他类型的,需要自定义比较规则:<1>该泛型实现Comparable接口中的compareTo()方法,再调用Collections.sort(List<T> list);<2>重新定义比较规则,并实现Comparator接口中的compare()方法,再调用Collectins.sort(List<T> list, Comparator<? super T> c)