Java集合框架

  Java集合类是一种特别有用的工具类,可以用于存储数量不等的多个对象,并可以实现常用的数据结构,如栈、队列等。除此之外,Java集合还可以用于保存具有映射关系的关联数组。Java集合分为:Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、可重复的集合;Map则代表具有映射关系的集合。
  

  1. 集合概述
      在编程时,常常需要集中存放多个数据,起初我们使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了长度,那么这个数组长度就是不可变的。另外如果我们要保存具有映射关系的的数据,例如:成绩表:语文—79,数学—80,数组就有点不能胜任。
      为了保存数量不确定的数据,以及保存具有映射关系的数据。Java提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有的集合类都位于java.util包下。
      集合类与数组不一样,数组元素可以是基本类型的数据,也可以是对象,而集合里只能保存对象。
      Java的集合类主要由两个接口派生而来:Collection和Map。Collection和Map是Java集合框架的根接口,这两个接口有包含了一些子接口或实现类。
    这里写图片描述
      上图显示了Collection体系里的集合,其中Set和List接口都是Collection接口派生出的两个子接口,他们分别代表了无序集合和有序集合;Queue是Java提供的队列实现。
    这里写图片描述
      上图为Map体系结构示意图,所有的Map实现类用于保存具有映射关系的数据。Map保存的每项数据都是key-value两个值组成。Map中的key值是不可重复的,key用于标识集合里的每项数据。
      对于Java的所有集合分类,可以分为三大类,
      1、set集合:类似于一个罐子,将对象存放在Set集合时,Set集合无法记住这个元素的顺序,所以Set里的元素不能重复。
      2、List集合:非常类似于数组,它可以记住每次添加的元素的顺序,不同于数组的是List的长度是可变的。
      3、Map集合:类似于中药橱柜,每个橱柜上的抽屉都带有标签,标签相当于key,抽屉相当于对象。可以根据key来找到对象。
      对于Set、List、Queue和Map四种集合,最常用的类为:HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList、HashMap、TreeMap。

  2. Collection
      Collection接口是List、Set、Queue接口的父接口,该接口里定义的方法可用于操作Set集合、List集合、Queue集合。
      这里写图片描述

  3. Iterator
      Iterator接口也是Java集合框架的成员,但它与Collection、Map集合不一样。Collection、Map集合主要用来盛装对象,而Iterator则主要用来遍历(迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
      这里写图片描述
      
    举例:   
public static void test(){
        Collection<String> collection = new ArrayList<String>();
        collection.add("testAdd");
        collection.add("test1Add");
        collection.add("test2Add");
        collection.add("test3Add");
        Collection<String> collection1 = new ArrayList<String>();
        collection1.add("addAll");
        collection1.addAll(collection);
        Iterator<String> iterator = collection1.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        System.out.println(collection.contains("test"));
        System.out.println(collection.contains("testAdd"));
        System.out.println(collection1.containsAll(collection));
        collection1.clear();
    }

  当使用Iterator迭代访问Collection集合元素时,Collection集合里的元素不能被改变,只能通过Iterator的remove方法删除上一次next方法返回的集合元素才可以,否则将会引发并发修改异常:java.util.ConcurrentModificationException。
  这一点类似于windows系统中,当我们打开一个文件时,又对这个文件执行了删除操作。Windows总会提示我们文件正在被使用,不能删除一个道理。
4. 使用foreach循环遍历集合元素
  除了使用Iterator接口迭代访问Collection集合里的元素之外,还可以使用foreach循环迭代访问集合元素更加便捷。

System.out.println("****************************************");
        Object o[] = users1.toArray();
        for(Object o1:o){
            System.out.println(o1);
        }
        System.out.println("****************************************");

  注意:使用foreach循环来遍历Collection集合时,与Iterator接口一样,迭代对象并不是元素对象本身,而是系统依次把集合元素对象的值赋给了迭代变量而已。

源代码:
https://github.com/wolf521/demo/tree/master/src/main/java/com/example/demo/collection

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值