目录
一、概述
二、集合是什么?
三、Collection/集合
四、ArrayList/数组列表
五、Iterator/迭代器
六、Set/无序集合/集
七、HashSet/散列集
八、LinkedHashSet
九、TreeSet/树集
十、List/列表
十一、 Map
一、概述所有集合类都位于java.util包下。集合中只能保存对象(保存对象的引用变量)。当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。
Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。
Java集合类存放于 java.util 包中,是一个用来存放对象的容器。
注意:
- 集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。
- 集合存放的是多个对象的引用,对象本身还是放在堆内存中。
- 集合可以存放不同类型,不限数量的数据类型。
Collection与Collections
- Collection是所有集合类的根接口;
- Collections是提供集合操作的工具类;
集合类和数组不同,
- 数组元素可以为基本数据类型值/对象引用;
- 集合元素只能为对象引用;
Java的集合类由Collection接口和Map接口派生,
- Set代表无序集合,无序不可重复;
- List代表有序集合,有序可重复;
- Map集合存储键值对
ArrayList底层有数组支持,通常作为默认首选;当程序频繁进行插入/删除操作时,选用LinkedLIst;如果元素数量固定,可选择真正数组/List/备选;
//我们这里将 ArrayList集合作为 Collection 的实现类 2 Collection collection = new ArrayList(); 3 4 //添加元素 5 collection.add("Tom"); 6 collection.add("Bob"); 7 8 //删除指定元素 9 collection.remove("Tom"); 10 11 //删除所有元素 12 Collection c = new ArrayList(); 13 c.add("Bob"); 14 collection.removeAll(c); 15 16 //检测是否存在某个元素 17 collection.contains("Tom"); 18 19 //判断是否为空 20 collection.isEmpty(); 21 22 //利用增强for循环遍历集合 23 for(Object obj : collection){ 24 System.out.println(obj); 25 } 26 //利用迭代器 Iterator 27 Iterator iterator = collection.iterator(); 28 while(iterator.hasNext()){ 29 Object obj = iterator.next(); 30 System.out.println(obj); 31 }Iterator/迭代器
Collection 接口的 iterator() 方法返回一个 Iterator。
public interface Iterable{ // Iterable泛型接口 Iteratoriterator(); // 由继承接口的集合类负责实现,返回一个迭代器 }
- 使用方法 iterator() 要求容器返回一个Iterator .第一次调用Iterator 的next() 方法时,它返回集合序列的第一个元素。
- 使用next() 获得集合序列的中的下一个元素。
- 使用hasNext()检查序列中是否元素。
- 使用remove()将迭代器新返回的元素删除
Set集合中对象不可重复,因此当试图添加两个相同元素时,add()方法返回false/元素不可加入;
Set集合中对象必须重写hashCode()方法和equals()方法;
Set最大的特性就是不允许在其中存放的元素是重复的
Set set1 = new HashSet(); if(set1.add("a")) { System.out.println("OK"); } if (set1.add("a")) { System.out.println("OK2"); } else { System.out.println("BAD2"); } set1.add("000"); set1.add("111"); set1.add("222"); System.out.println("集合set1的内容:"+set1); System.out.println("集合set1的大小:"+set1.size()); set1.remove("000"); System.out.println("集合set1的内容:"+set1); System.out.println("集合set1中是否包含000 :"+set1.contains("000")); System.out.println("集合set1中是否包含111 :"+set1.contains("111")); Set set2=new HashSet(); set2.add("111"); set2.addAll(set1);//将set1 集合中的元素全部都加到set2中 System.out.println("集合set2的内容:"+set2); Iterator iterator = set1.iterator();//得到一个迭代器 while (iterator.hasNext()) {//遍历 String element =(String) iterator.next(); System.out.println("iterator = " + element); } //将集合set1转化为数组 Object s[]= set1.toArray(); for(int i=0;i关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?