[Java集合](一)概述
2017-12-18 16:39
162 查看
概述
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集合概述Set、List、Map
- Java集合概述
- Java中的集合概述
- Java集合概述
- 黑马程序员——Java语言基础——06.集合框架(1)集合框架概述和List、Set集合
- java:Java入门第三季第七课:集合框架概述
- Java中Collection集合概述
- 关于java集合的概述
- 黑马程序员——JAVA基础——集合---概述、Collection中共性方法、List、Map、工具类Collections和Arrays
- java 集合框架(一)概述
- Java学习总结第二十一天Java集合概述
- Java集合概述集Collection 和 Iterator 接口用法详解
- 【Java集合源码剖析】Java集合框架概述
- Java基础-集合框架(体系概述)
- Java集合(一):Java集合概述
- 跟王老师学集合(一)为什么要使用集合和Java集合概述
- Java集合(一):Java集合概述
- java集合概述
- java集合概述