[Java集合](一)概述
来源:互联网 发布:dynamic duo知乎 编辑:程序博客网 时间:2024/04/25 21:21
概述
Java集合类是一种特别常用的工具类,可用于存储数量不等的对象,并可以实现常用的数据结构,如栈、队列等,除此之外,Java集合还可用于保存具有映射关系的关联数组。
Java集合大致可分为Set、List、Queue和Map四种体系,其中Set代表无序、不可重复的集合,List代表有序、可重复的集合,Map代表具有映射关系的集合,Queue代表一种队列集合实现,如下图所示:
Java的集合类主要由两种接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口。下图分别是两种集合所包含的各种集合子类。
对于Set、List、Queue和Map四种集合,最常用的实现类分别是:HashSet、TreeSet、ArrayList、ArrayDeque、LinkedList和HashMap等实现类。
Collection接口
Collection 接口是List、Set、Queue接口的父接口,定义了如下操作集合元素的方法: 1.1 boolean add(Object o) 向集合里添加一个元素,如果集合对象被添加操作改变则返回true; 1.2 boolean addAll(Collection c) 将指定 collection 中的所有元素都添加到此 collection 中,如果集合对象被添加返回true; 1.3 void clear() 移除此 collection 中的所有元素,将集合长度变为0; 1.4 boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。 1.5 boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。 1.6 boolean equals(Object o) 比较此 collection 与指定对象是否相等。 1.7 int hashCode() 返回此 collection 的哈希码值。 1.8 boolean isEmpty() 如果此 collection 不包含元素,则返回 true。 1.9 Iterator<E> iterator() 返回一个Iterator对象,用于遍历集合里的元素; 1.10 boolean remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话返回true; 1.11 boolean removeAll(Collection c) 移除此 collection 中那些也包含在指定 collection 中的所有元素,如果存在的话返回true; 1.12 boolean retainAll(Collection c) 仅保留此 collection 中那些也包含在指定 collection 的元素,如果存在的话返回true; 1.13 int size() 返回此 collection 中的元素个数; 1.14 Object[] toArray() 该方法把集合转换成一个数组,所有的集合元素变成对应的数组元素;
集合类就像容器,以上的各种方法就是添加对象、删除对象、清空容器、判断容器是否为空、计算容器大小等方法。
import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; public class CollectionTest { public static void main(String[] args) { Collection c = new ArrayList(); // 添加元素 c.add("孙悟空"); c.add(6); // 输出集合元素个数 System.out.println("c的集合个数为:" + c.size()); // 移除指定元素 c.remove(6); System.out.println("c的集合个数为:" + c.size()); // 判断集合是否包含某个元素 System.out.println("判断集合是否包含某个元素:" + c.contains("孙悟空")); c.add("Java EE"); System.out.println("c的集合元素:" + c); Collection books = new HashSet(); books.add("孙悟空"); books.add("Java讲义"); // c集合是否完全包含books集合 System.out.println("c集合是否完全包含books集合" + c.containsAll(books)); // 用c集合减去books集合里的元素 c.removeAll(books); System.out.println("c的集合元素:" + c); // 删除c集合里的所有元素 c.clear(); System.out.println("c的集合元素:" + c); // books 集合里面只剩下c集合里也包含的元素 books.removeAll(c); System.out.println("books的集合元素:" + books); } } 运行结果: c的集合个数为:2 c的集合个数为:1 判断集合是否包含某个元素:true c的集合元素:[孙悟空, Java EE] c集合是否完全包含books集合false c的集合元素:[Java EE] c的集合元素:[] books的集合元素:[Java讲义, 孙悟空]
Iterator接口
Iterator接口主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象也被称为迭代器。
使用 Iterator 对集合元素进行迭代时,并不是把集合元素本身传给迭代变量,而是把集合元素的值传给了迭代变量,所以修改迭代变量的值对集合元素本身没有任何影响。
提供的方法:
1. boolean hasNext()如果仍有元素可以迭代,则返回 true。
2. Object next()返回迭代的下一个元素。
3. void remove()删除集合里上一次next方法返回的元素。
4. void forEachRemaining(Consumer action),该方法可用Lambda表达式来遍历集合元素。
import java.util.Collection; import java.util.HashSet; import java.util.Iterator; public class IteratorTest { public static void main(String[] args) { Collection books = new HashSet(); books.add("A书"); books.add("B书"); books.add("C书"); // 获取books集合对应的迭代器 Iterator it = books.iterator(); while (it.hasNext()) { // it.next()返回的是一个对象类型,需要强制转换 String book = (String) it.next(); System.out.println(book); if (book.equals("B书")) { // 从集合中删除上一次next方法返回的元素 it.remove(); } // book变量赋值,不会改变集合元素本身 book = "C书"; } System.out.println(books); } }
除了上面的方法,也可以使用foreach循环遍历集合元素,比起Iterator更加简洁,同样集合不能被改变。
import java.util.Collection; import java.util.HashSet; import java.util.Iterator; public class ForeachTest { public static void main(String[] args) { Collection books = new HashSet(); books.add("A书"); books.add("B书"); books.add("C书"); for(Object obj:books){ String book=(String)obj; System.out.println(book); if(book.equals("B书")){ books.remove(book); } } System.out.println(books); } } Error:java.util.ConcurrentModificationException
注意:
Iterator必须依附于Collection对象,若有一个Iterator对象,则必然有一个与之冠梁的Collection对象。Iterator提供了两个方法来迭代访问Collection集合里的元素,并可通过remove()方法来删除集合中上一个next()方法返回的集合元素。
参考链接: http://blog.csdn.net/meyoung01/article/details/15812895
- JAVA集合(一)概述
- [Java集合](一)概述
- Java集合概述(一):Set集合
- Java中的集合框架概述(一)
- java 集合框架(一)概述
- java 中的集合(一) 概述
- java集合系列——java集合概述(一)
- JAVA基础---集合(一)--集合框架概述
- Java集合(一):Java集合概述
- Java集合(一):Java集合概述
- Java集合类一概述
- Java集合类概述《一》
- Java集合系列一:集合概述
- Java集合归纳-<一>集合概述
- java自学笔记之集合概述一
- java基础集合框架——List、Set、Map概述(java集合一)
- java基础集合框架——List、Set、Map概述(java集合一)
- Java集合概述(二):List集合
- darwin之发送rtp包流程
- 购物车 删除 计算总额
- Spring 注解实例--@Autowired 注入到List和Map
- 解决Ajax 使用get传递中文数据 乱码
- MyBatis 常用写法
- [Java集合](一)概述
- 使用layui修改table样式
- 有关项目依赖包发生 Manifest Merge 冲突的详细解决方案
- 初识EM算法
- 第一阶段-入门详细图文讲解tensorflow1.4 -(六)tensorflow运行机制MNIST
- flume系列-flume负载均衡(存HDFS)
- bzoj2751 [HAOI2012]容易题 数学
- Spring @Autowired 注入集合类型的问题
- 评估红酒口感