java 集合Collection

java 集合Collection,第1张

java 集合Collection 1 Collection 概述

集合是java中提供的大小可变的容器。

集合和数组的区别:

数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储任意类型数据。集合存储的都是引用数据类型。如果想存储基本类型数据需要存储对应的包装类型。 2 集合类的继承体系

Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。

List的特点是元素有序、元素可重复、有索引(可通过索引遍历集合)。
ArrayList:集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。
LinekdList:集合数据存储的结构是双向链表结构。方便元素添加、删除的集合(增删首尾元素尤其快)。在开发时,linkedList集合也可以作为堆栈,队列的结构使用。
Vector:和 ArrayList 类似,它是线程安全的,但性能略差。Set的特点是元素不可重复、无索引(不可通过索引遍历集合)。
HashSet:添加的元素是无序,不重复,无索引的。根据对象的哈希值来确定元素在集合中的存储位置,具有良好的存储和查找性能。依赖hashCode与equals方法保证元素唯一性。
linkedHashSet:添加的元素是有序,不重复,无索引的。
TreeSet:不重复,无索引,按照大小默认升序排序。

Collection继承体系:

3 Collection 常用API

Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法。如下所示:

public boolean add(E e): 把给定的对象添加到当前集合中 。public void clear() :清空集合中所有的元素。public boolean remove(E e): 把给定的对象在当前集合中删除。public boolean contains(Object obj): 判断当前集合中是否包含给定的对象。public boolean isEmpty(): 判断当前集合是否为空。public int size(): 返回集合中元素的个数。public Object[] toArray(): 把集合中的元素,存储到数组中(可以通过String[]::new指定返回数组的类型为String) 4 Collection 的三种遍历方式

Collection集合的遍历方式是全部集合都可以直接使用的。

Collection集合的遍历方式有三种:

迭代器Iteratorforeach(增强for循环)JDK 1.8开始之后的新技术Lambda表达式 4.1 Iterator迭代器

JDK专门提供了一个接口java.util.Iterator用于遍历集合中的所有元素。

public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的。

Iterator接口的常用方法如下:

public E next():返回迭代的下一个元素。public boolean hasNext():如果仍有元素可以迭代,则返回 true。

代码示例:

  	public static void main(String[] args) {
        Collection coll = new ArrayList();
        coll.add("张三");
        coll.add("李四");
        coll.add("王五");
        //使用迭代器遍历。每个集合对象都有自己的迭代器。
        //泛型指的是迭代出元素的数据类型
        Iterator it = coll.iterator();
        while(it.hasNext()){ //判断是否有迭代元素
            String s = it.next();//获取迭代出的元素
            System.out.println(s);
        }
  	}

tips:

    在进行集合元素获取时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会抛出java.util.NoSuchElementException没有集合元素异常。在进行集合元素获取时,如果添加或移除集合中的元素 , 将无法继续迭代 , 将会抛出ConcurrentModificationException并发修改异常.
4.2 增强for循环

foreach是一种遍历形式,可以遍历集合或者数组。

优点:foreach遍历集合实际上是迭代器遍历的简化写法。
缺点:foreach遍历无法知道遍历到了哪个元素了,因为没有索引。

代码示例:

    public static void main(String[] args) {
        Collection lists = new ArrayList<>();
        coll.add("张三");
        coll.add("李四");
        coll.add("王五");
        
        for (String ele : lists) {
            System.out.println(ele);
        }

        int[] ages = new int[]{17 , 18 , 38 , 21};
        for (int age : ages) {
            System.out.println(age);
        }
    }
4.3 Lambda表达式
    public static void main(String[] args) {
        Collection lists = new ArrayList<>();
        coll.add("张三");
        coll.add("李四");
        coll.add("王五");
        System.out.println(lists);
        
        lists.forEach(s -> {
            System.out.println(s);
        });
        // 简化版本(1)
        lists.forEach(s ->  System.out.println(s));
        // 简化版本(2)
        lists.forEach(System.out::println);
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存