栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 集合Collection

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号