Java——Java集合概述
2017-08-14 10:47
141 查看
本文根据疯狂Java讲义(第3版)百度百科整理而成,感谢李刚老师
Java集合类是一种特别有用的工具类,可用于存储数量的对象,也可以实现常用的数据结构如栈、队列等。Java集合大致分为Set,List,Queue(三者均由Collection派生)和Map四种体系,其中Set表示无序,不可重复的集合,List表示有序,可以重复的集合,Queue用于模拟队列这种数据结构,Map则表示具有映射关系(键值对)的集合。
Java集合就像是一种容器,可以把多个对象(实际是对象的引用)放进容器中。Java 5之前,集合会丢失所放入对象的数据类型,把所有对象都当做Object类型处理;Java 5增加泛型,集合可以记住容器中对象的数据类型,从而可以编写出更简洁健壮的代码。
上图为Collection接口,子接口及其实现的继承树。Collection为根接口,派生出三个子接口:Set、Queue和List。
子接口Set的实现类有HashSet,EnumSet,子接口有SortedSet,其中类HashSet有子类LinkedHashSet,子接口SortedSet有一个实现类是TreeSet。
子接口Queue的实现类有PriorityQueue(优先队列),子接口有Deque,其中子接口的实现类有ArrayDeque,LinkedList(也实现了List接口)。
子接口List的实现类有ArrayList,LinkedList,Vector。其中Vector有子类Stack。Vector类似于ArrayList,但是线程安全,Stack可作为数据结构栈。不过Vector和Stack比较古老,JDK1.0时就存在了,性能较差,现在不推荐使用这二者。
常用的实现类有HashSet, TreeSet, ArrayList, ArrayDeque, LinkedList。
上图是Map接口及其实现的继承树,所有的Map实现类用于保存具有映射关系的数据(也叫关联数组或键值对)。
Map接口的子接口有SortedMap,实现类有EnumMap,IdentityHashMap,HashMap,Hashtable,WeakHashMap。其中子接口SortedMap存在子类TreeMap,子类HashMap存在子类LinkedHashMap,Hashtable存在子类Properties。
常用的实现类有HashMap,TreeMap。
感兴趣的同学可以移步 Java在线API中文文档 - 开源中国,有能力的同学可以查看 Java在线API英文文档 - 开源中国,查看API是编程人员应该掌握的一项基本技能,一定要学会哦。
2.Iterator接口也是Java集合框架的成员,但它与Collection系列,Map系列的集合不一样,Collection和Map系列用于盛装其他对象,而Iterator主要用于遍历(即迭代访问)集合中的元素。Iterator对象也被称为迭代器。Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的统一编程接口。Iterator定义课如下四个方法:
boolean hasNext(): 如果被迭代的集合元素还没有遍历完,则返回true。
Object next(): 返回集合里的下一个元素。
void remove(): 删除集合里上一次next方法返回的元素。
void forEachRemaining(Consumer action): 这是Java 8为Iterator新增的默认方法,该方法可使用Lambda表达是来遍历集合元素。
3.使用foreach循环遍历集合元素:除了可以使用Iterator接口迭代访问Collection集合里的元素之外,使用Java 5提供的foreach循环迭代访问集合元素也很便捷。
4.Java 8新增特性:使用Lambda表达式遍历集合,使用Lambda表达式遍历Iterator,使用Predicate操作集合,使用Stream操作集合。暂时还没有用到过,有时间再学习。
5.接下来逐一介绍Set集合,List集合和Map集合…
参考资料:
1. Java在线API中文文档 - 开源中国
2. JAVA集合类汇总 - hey平平
3. Java集合类详解 - 毛凡的博客
Java集合类是一种特别有用的工具类,可用于存储数量的对象,也可以实现常用的数据结构如栈、队列等。Java集合大致分为Set,List,Queue(三者均由Collection派生)和Map四种体系,其中Set表示无序,不可重复的集合,List表示有序,可以重复的集合,Queue用于模拟队列这种数据结构,Map则表示具有映射关系(键值对)的集合。
Java集合就像是一种容器,可以把多个对象(实际是对象的引用)放进容器中。Java 5之前,集合会丢失所放入对象的数据类型,把所有对象都当做Object类型处理;Java 5增加泛型,集合可以记住容器中对象的数据类型,从而可以编写出更简洁健壮的代码。
一、Java集合概述
1. Collection和Map体系结构
Java的集合类主要由两个接口派生而出,Collection和Map,Collection和Map是Java集合的根接口,这两个接口又包含了一些子接口或实现类。上图为Collection接口,子接口及其实现的继承树。Collection为根接口,派生出三个子接口:Set、Queue和List。
子接口Set的实现类有HashSet,EnumSet,子接口有SortedSet,其中类HashSet有子类LinkedHashSet,子接口SortedSet有一个实现类是TreeSet。
子接口Queue的实现类有PriorityQueue(优先队列),子接口有Deque,其中子接口的实现类有ArrayDeque,LinkedList(也实现了List接口)。
子接口List的实现类有ArrayList,LinkedList,Vector。其中Vector有子类Stack。Vector类似于ArrayList,但是线程安全,Stack可作为数据结构栈。不过Vector和Stack比较古老,JDK1.0时就存在了,性能较差,现在不推荐使用这二者。
常用的实现类有HashSet, TreeSet, ArrayList, ArrayDeque, LinkedList。
上图是Map接口及其实现的继承树,所有的Map实现类用于保存具有映射关系的数据(也叫关联数组或键值对)。
Map接口的子接口有SortedMap,实现类有EnumMap,IdentityHashMap,HashMap,Hashtable,WeakHashMap。其中子接口SortedMap存在子类TreeMap,子类HashMap存在子类LinkedHashMap,Hashtable存在子类Properties。
常用的实现类有HashMap,TreeMap。
2. Collection和Iterator接口
1.Collection接口是List,Set和Queue接口的根接口,该接口中定义的方法既可以用于List集合,也可以用于Set和Queue集合。Collection接口定义了如下操作集合元素的方法:返回类型 | 方法名称 | 方法摘要 |
---|---|---|
boolean | add(Obejct o) | 该方法用于向集合里添加一个元素。如果集合对象被佳添加操作改变了,则返回true,否则返回false。 |
boolean | addAll(Collection c) | 该方法把集合c里的所元素添加到指定集合里。如果集合对象被添加操作改变了,则返回true,否则返回false。 |
void | clear() | 清除集合里的所有元素,将集合长度变为0。 |
boolean | contains(Object o) | 返回集合里是否包含指定元素 |
boolean | containAll(Collection c) | 返回集合里是否包含指定集合c里的所有元素 |
boolean | isEmpty() | 返回集合是否为空。当集合长度为0时返回true,否则返回false。 |
Iterator | iterator() | 返回一个Iterator对象,用于遍历集合里的元素。 |
boolean | remove(Object o) | 删除集合中的指定元素o,当即和里包含了一个或多个元素o时,该集合只删除第一个符合条件的元素,删除成功则返回true。 |
boolean | removeAll(Collection c) | 从集合里删除集合c里包含的所有元素(相当于调用该方法的集合减集合c),如果删除了一个或一个以上的元素,则方法返回true. |
boolean | retainAll(Collection c) | 从即合理删除集合c不包含的元素(相当于调用该方法的集合与c做交集),如果该集合改变,则返回true |
int | size() | 该方法返回集合里元素的个数。 |
Obejct[] | toArray() | 该方法把集合转换成一个数组,所有的集合元素变成对对应的数组元素。 |
// Collection示例代码(没有使用泛型) public class CollectionTest { public static void main(String[] args) { Collection c = new ArrayList(); c.add("孙悟空被压了"); c.add(500);// 整数可以自动转化为响应的包装类型Integer c.add("年"); System.out.println(c.isEmpty()); System.out.println(c.size()); System.out.println(c); // 直接输出集合c会自动调用集合的toString方法 System.out.println(c.toString()); //等同于上一句 System.out.println(c.contains(500)); c.clear(); System.out.println(c.isEmpty()); System.out.println(c); System.out.println(c.contains(500)); } }
2.Iterator接口也是Java集合框架的成员,但它与Collection系列,Map系列的集合不一样,Collection和Map系列用于盛装其他对象,而Iterator主要用于遍历(即迭代访问)集合中的元素。Iterator对象也被称为迭代器。Iterator接口隐藏了各种Collection实现类的底层细节,向应用程序提供了遍历Collection集合元素的统一编程接口。Iterator定义课如下四个方法:
boolean hasNext(): 如果被迭代的集合元素还没有遍历完,则返回true。
Object next(): 返回集合里的下一个元素。
void remove(): 删除集合里上一次next方法返回的元素。
void forEachRemaining(Consumer action): 这是Java 8为Iterator新增的默认方法,该方法可使用Lambda表达是来遍历集合元素。
// Iterator示例代码 public class IteratorTest { public static void main(String[] args) { Collection c = new ArrayList(); ...// 添加String元素 Iterator it = c.iterator(); while (it.hasNext()) { String s = (String)it.next(); System.out.print(book + " "); } } }
3.使用foreach循环遍历集合元素:除了可以使用Iterator接口迭代访问Collection集合里的元素之外,使用Java 5提供的foreach循环迭代访问集合元素也很便捷。
// 使用Foreach循环迭代访问 public class ForeachTest { public static void main(String[] args) { Collection c = new ArrayList(); ...// 添加String元素 foreach(Object obj: c) { String s = (String)obj; System.out.print(book + " "); } } }
4.Java 8新增特性:使用Lambda表达式遍历集合,使用Lambda表达式遍历Iterator,使用Predicate操作集合,使用Stream操作集合。暂时还没有用到过,有时间再学习。
5.接下来逐一介绍Set集合,List集合和Map集合…
参考资料:
1. Java在线API中文文档 - 开源中国
2. JAVA集合类汇总 - hey平平
3. Java集合类详解 - 毛凡的博客
相关文章推荐
- JAVA集合(一)概述
- 1.Java集合总结系列:Java集合概述
- 【慕课笔记】第四章 JAVA中的集合框架(上) 第1节 JAVA中的集合框架概述
- 关于java集合框架collection概述
- java集合概述
- 【Java集合源码剖析】Java集合框架概述
- Java基础知识强化之集合框架笔记38:Set集合之Set集合概述和特点
- 关于java集合的概述
- JAVA基础 之 集合概述
- Java集合归纳-<一>集合概述
- java集合概述
- java语言基础(68)——集合框架(泛型概述和使用)
- 个人学习-java-集合的概述
- Java集合概述
- Java集合的概述
- java 集合概述
- Java语言基础——06.集合框架(1)集合框架概述和List、Set集合
- Java集合概述
- 10001-Java集合--概述
- 黑马程序员_java集合概述