复习一下Java中的集合类,是面试笔试中常考察的一个点,特地做的整理。
什么是集合类?集合类,也叫容器类。Java集合类可以用来存储数量庞大的对象。
我们和数组进行对比:
数组:存储基本数据类型,数据类型单一,长度固定,不能动态添加数据。
集合:存储的即可是基本类型的值,也可以是对象,可以存储多种数据类型,长度可变,可以动态添加数据。
Java集合类的体系
Java集合类主要有两个接口派生而出:Collection和Map。即集合类都是实现的这两个接口。我们在实际编程中经常使用的有 List、Set、Queue(这些是实现的 Collection 接口)HashMap、TreeMap、HashTable(这些实现的 Map 接口)
Collection接口结构Collection 接口位于 Java.util 包下,是一个父接口, List、Set、Queue 都是实现的 Collection 接口。Collection 做为父接口提供一些操作集合类的方法,因此它的子接口也有这些方法。
Collection 接口不能被实例化,并且在实际的编程过程中几乎不会使用它进行数据的存储。
Map接口结构Map 接口实现的是键值对的存储,类似 python 中的 dict。
Map中比较常见的是 HashMap、TreeMap、Hashtable 类。
Set接口
Set 接口继承自 Collection 接口,Collection 接口有的方法 Set 接口中也有。
Set 接口自身的特性:
不允许重复元素
不区分先后顺序(无序)
允许值是 null
Set 接口有两个比较常用的具体实现,HashSet、TreeSet。下面分别说一下这两个集合类。
HashSet主要特点是快速查找元素。HashSet 是基于 Hash 算法来实现的,在每次添加新的对象的时候,会根据散列码来判断对象是否重复,散列码的获取是通过 Object 的 hashCode() 来实现的。同样 HashSet 也是无序的。
1 import java.util.*; 2 /** 3 * @author jyroy 4 * HashSet使用 5 */ 6 public class HashSetDemo { 7 public static void main(String[] args) { 8 HashSet hashSet = new HashSet(); 9 hashSet.add("Tom"); 10 hashSet.add("Jack"); 11 hashSet.add("Roy"); 12 System.out.println(hashSet); 13 } 14 }