Java集合:Collection-数组集合区别、集合特点、常用方法、遍历-List有序集合-Set无序集合-Map双列集合

文章目录

  • 1 Collection
    • 1.1 数组和集合的区别
    • 1.2 集合的特点
    • 1.3 Collection的方法
    • 1.4 遍历
  • 2 List有序集合-ArrayList和LinkedList
    • 2.1 特有方法
    • 2.2 ArrayList
    • 2.3 LinkedList
  • 3 Set无序唯一集合LinkedHashSet-TreeSet
    • 3.1 HashSet
    • 3.2 LinkedHashSet
    • 3.3 TreeSet
  • 4 Map双列集合
    • 4.1 Map集合和Collection集合区别
    • 4.2 Map集合的方法
    • 4.3 HashMap
    • 4.4 LinkedHashMap

Java集合:Collection-数组集合区别、集合特点、常用方法、遍历-List有序集合-Set无序集合-Map双列集合_第1张图片
Java集合:Collection-数组集合区别、集合特点、常用方法、遍历-List有序集合-Set无序集合-Map双列集合_第2张图片

1 Collection

1.1 数组和集合的区别

  • 长度:数组长度固定;集合长度可变
  • 存储数据类型:数组可以存基本类型和引用类型(一个数组只能存一种类型);集合只能存引用类型(集合可以存储不同类型的对象)

1.2 集合的特点

  • 集合只能存对象,长度可变。
  • 集合可以存储不同类型的对象。

1.3 Collection的方法

添加 add(Object e); addAll(Collection c)
删除 clear();remove(Object o) ; removeAll(Collection c)
判断 contains(Object o) ;containsAll(Collection c);isEmpty()
获取 iterator(); size()
交集
转换

  • 添加
    boolean add(Object o) 添加一个元素
    Boolean addAll(Coolection c) 添加整个集合的元素
  • 删除
    void clear() 删除所有元素
    boolean remove(Object o) 删除指定元素
    boolean removeAll(Collection c) 删除整个集合的元素
  • 判断
    boolean contain(Object o) 判断是否包含指定元素
    boolean containALl(Collection c) 判断是否包含指定集合全部元素
    boolean isEmpty() 判断集合是否为空
  • 获取
    Iterator iterator() 返回此集合中的元素的迭代器
    int size() 返回此集合中的元素数。
  • 交集
    boolean retainAll(Collection c) 2个集合中都有的元素
  • 转换
    Object[] toArray() 转成数组

1.4 遍历

三种方式

toArray
Iterator
Iterator iterator = c.iterator();
while (iterator.hasNext()) {
Student s = (Student) iterator.next();
System.out.println(s.getName() + “—” + s.getAge());
}

	public static void main(String[] args) {
        Collection c = new ArrayList();
        Student s1 = new Student("tony", 19);
        Student s2 = new Student("boniu", 18);
        Student s3 = new Student("didi", 17);
        c.add(s1);
        c.add(s2);
        c.add(s3);
        System.out.println(c);
        // 方法 1 toArray
        Object[] object = c.toArray();
        for (Object o : object) {
            Student s = (Student) o;
            System.out.println(s.getName() + "---" + s.getAge());
        }
        System.out.println("---------");
        // 方法 2 Iterator
        Iterator iterator = c.iterator();
        while (iterator.hasNext()) {
            Student s = (Student) iterator.next();
            System.out.println(s.getName() + "---" + s.getAge());
        }
        System.out.println("---------");
        // 注意:NoSuchElementException  不要多次使用next方法
        for (Iterator it = c.iterator(); it.hasNext(); ) {
            System.out.println(((Student) it.next()).getName()+"---"+((Student) it.next()).getAge());
        }
    }

2 List有序集合-ArrayList和LinkedList

2.1 特有方法

  • void add(int index, E element)
  • Object get(int index)
  • ListIterator listIterator()
  • E remove(int index)
  • E set(int index, E element)
  • List subList(int fromIndex, int toIndex)

2.2 ArrayList

  • 可调整大小的数组的实现List接口
  • 底层结构是数组,查询快,增删慢
  • 线程不安全,效率高

2.3 LinkedList

  • 底层结构是链表,查询慢,增删快
  • 线程不安全,效率高

3 Set无序唯一集合LinkedHashSet-TreeSet

3.1 HashSet

  • 由哈希表(元素是链表的数组)实现
  • 线程不安全,效率高
  • 对集合的迭代次序不作任何保证
  • 这个类允许null元素

3.2 LinkedHashSet

  • 哈希表和链表实现了Set接口,具有可预测的迭代次序
  • 有序(存取顺序),唯一
  • 由链表保证有序
  • 由哈希表保证唯一
  • 不同步,线程不安全,效率高

3.3 TreeSet

  • 使用元素的自然顺序对元素进行排序,或者根据创建对象时传递的Comparator比较器对象进行排序
  • 取决于所使用的构造方法
  • 不同步,线程不安全,效率高
  • 唯一,可以排序

4 Map双列集合

4.1 Map集合和Collection集合区别

  • Map集合存储元素的时候都是成对出现的;Collection集合存储元素的时候是单独出现的。
  • Map集合的键是唯一的。值可以重复;Collection的子接口List是可重复的,Set是唯一的。
  • Map集合的数据结构都针对的是键,只对键有效,根值无关;Collection集合的数据结构针对元素。

4.2 Map集合的方法

  • 添加或替换
    V put(K key, V value) 添加元素,键出现过就替换值。
    void putAll(Map m) 添加指定Map集合中的所有元素

  • 删除
    void clear() 从该Map中删除所有的键值对元素
    V remove(Object key) 删除指定键值对元素,返回被删除的值
    default boolean remove(Object key, Object value) 根据指定的键值对删除元素

  • 判断
    boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回 true 。
    boolean containsValue(Object value) 如果此地图将一个或多个键映射到指定的值,则返回 true 。
    boolean isEmpty() 如果此地图不包含键值映射,则返回 true 。

  • 获取
    Set> entrySet() 返回此地图中包含的映射的Set视图。
    V get(Object key) 返回到指定键所映射的值,
    Set keySet() 返回此地图中包含的键的Set视图。
    int size() 返回此地图中键值映射的数量。
    Collection values() 返回此地图中包含的值的Collection视图。

  • 替换
    default V replace(K key, V value) 只有当目标映射到某个值时,才能替换指定键的条目。
    default boolean replace(K key, V oldValue, V newValue)
    仅当当前映射到指定的值时,才能替换指定键的条目。

4.3 HashMap

  • 基于哈希表的实现的Map接口,可以保证键的唯一
  • 无序唯一,允许null的值和null键
  • 不同步,线程不安全,效率高。

4.4 LinkedHashMap

  • 哈希表和链表实现的Map接口,具有可预测的迭代次序。
  • 有序(存取顺序),唯一,不同步

4.5 TreeMap

  • 一个红黑树基于NavigableMap实现,保证键的唯一和排序

  • 排序依然有2种: 取决于所使用的构造方法

    自然排序
    比较器排序

你可能感兴趣的:(合集,java,list)