首页 > 代码库 > Java之集合1
Java之集合1
通常所说的集合类型主要有3种:set(集)、list(列表)和map(映射)。如图所示,
一、Collection接口
Collection是最基本的集合接口。Collection的下属结构如图所示,由Collection的接口派生的子接口有List和Set。
Collection支持迭代器操作,进行查询。
Iterator iter = collection.iterator(); // 获得一个迭代子
while(iter.hasNext()) { // 判断当有下一个元素时
Object obj = iter.next(); // 得到下一个元素
}
-
- List (定义了一个允许元素重复的有序列表。并且提供了特殊的迭代器ListIterator,不仅可以实现查询操作,还可实现插入和删除操作,以及双向访问。)
- LinkedList (链表,不是基于Array的LIst,适合做添加和删除操作,因为不涉及到元素的移动)
- ArrayList (基于Array的List,不同步的,性能优于Vector,适合做查询操作)
- Vector (基于Array的List,同步synchronized,线程安全,是旧的历史集合类。)
- List (定义了一个允许元素重复的有序列表。并且提供了特殊的迭代器ListIterator,不仅可以实现查询操作,还可实现插入和删除操作,以及双向访问。)
List<String> list = new LinkedList<String>() ; for (int i = 0; i <= 5; i++) { list.add("a"+i) ; } System.out.println("集合 list="+list); Collections.shuffle(list); // 随机排列 System.out.println("随机排列 list="+list); Collections.sort(list); // 排序 System.out.println("排序后 list="+list); Collections.reverse(list); // 逆序排列 System.out.println("逆序排列 list="+list); System.out.println("二分查找有序集合方式a3的位置为 "+Collections.binarySearch(list, "a3")); // 二分查找
Result为:
-
- Set(表示数学意义上的集合的概念,不包含重复元素,即不存在两个对象a.equals(b)为true的情况。set集合本身是无序的。)
- TreeSet (可以实现从set中有序的取出元素)
- HashSet(在集合中存储效率高,但需要添加到
HashSet
的对象需要采用恰当分配散列码的方式来实现hashCode()
方法。)
- Set(表示数学意义上的集合的概念,不包含重复元素,即不存在两个对象a.equals(b)为true的情况。set集合本身是无序的。)
1 package javaBasic; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 import java.util.TreeSet; 6 7 public class SetExample 8 { 9 public static void main(String[] args) { 10 Set<String> set = new HashSet<String>() ; 11 set.add("ZhangSan") ; 12 set.add("LiSi") ; 13 set.add("Wyao") ; 14 set.add("ZhaoLiu") ; 15 set.add("Wyao") ; 16 17 System.out.println(set) ; 18 19 Set<String> treeSet = new TreeSet<String>(set) ; 20 System.out.println(treeSet); 21 } 22 }
Result:
由结果可知,重复元素“Wyao”只出现了一次,并且使用TreeSet进行排序之后输出为有序,按照字母先后顺序排序。
二、Map接口
1. Map
接口不是 Collection
接口的继承。提供了键Key到值Value的映射。键是唯一的,不允许重复,但是值可以有多值,用逗号隔开,可以重复。
Map(key-value 映射)
— HashMap (在Map
中插入、删除和定位元素,HashMap
是最好的选择。HashMap允许null值作为key和value。不同步的,采用快速失败机制,因此效率更高。)
— Hashtable (是原始集合类之一,也称作遗留类。而Hashtable不可以null值作为key和value。同步的,)
— WeakHashMap
2. TreeMap与HashMap的比较
Map有两种常见的实现方式:HashMap和TreeMap。根据需要决定要使用哪种方式。其中,HashMap采用快速失败机制,在Map中插入、删除、查询元素较快。若是按顺序遍历键Key,则采用TreeMap方式
会更快。使用HashMap
要求添加的键类明确定义了 hashCode()
实现。有了TreeMap
实现,添加到映射的元素一定是可排序的。
部分内容参考http://blog.csdn.net/u014136713/article/details/52089156
Java之集合1