Collection 是set list queue的父接口
Set 无顺序,不能含重复元素
HashSet按Hash算法存储集合元素,具有良好的存取和查找性能 (不按顺序存取,不同步,需要代码保证同步,元素可以是null)
TreeSet按照红黑树数据结构对元素进行排序,有自然排序和定制排序
EnumSet 为枚举类设计的集合类,干啥的我也不知道
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.TreeSet;
class CollectionTest
{
public static void main(String[] args)
{
/*HashSet*/
Set<String> books = new HashSet<String>();
books.add("新华字典");
books.add("葵花宝典");
books.add("参考书");
/*foreach*/
for(String book : books){
//books.remove(book); //foreach不能修改集合,修改则报错
System.out.println(book); //输出 新华字典 参考书 葵花宝典 不按存入顺序摆放
}
/*迭代*/
Iterator it = books.iterator();
while(it.hasNext()){
String book = (String)it.next(); //在一次迭代中不可使用两次it.next(),it.next()返回类型是Object
System.out.println(book);
//books.remove(book); //Iterator迭代过程也不能修改集合
System.out.println(book.hashCode()); //hashCode元素的“索引”,根据hashCode查找该元素
}
/*TreeSet*/
Set<String> books2 = new TreeSet<String>();
books2.add("新华字典");
books2.add("葵花宝典");
books2.add("参考书");
for(String book : books2){
//books.remove(book); //foreach不能修改集合,修改则报错
System.out.println(book); //输出 参考书 新华字典 葵花宝典
}
}
}
List
ArrayList 线程不安全
Vector 线程安全,所以性能比ArrayList低
LinkedList 基于链表实现的List类,对于顺序访问集合中的元素进行了优化,特别是插入、删除元素时比较快
import java.util.*;
class CollectionTest
{
public static void main(String[] args)
{
/*ArrayList*/
List<String> list = new ArrayList<String>();
list.add("葵花宝典");
list.add("新华字典");
list.add("参考书");
/*循环访问*/
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
/*foreach*/
for(Object book : list){
System.out.println(book);
}
}
}
Map 键和值
HashMap 线程不安全,可以使用null作为键和值
Hashtable 线程安全,性能低一些,不能使用null作为键和值
TreeMap 基于红黑树排序
EnumMap 枚举类一起使用的map实现
import java.util.*;
class CollectionTest
{
public static void main(String[] args)
{
Map map = new HashMap();
map.put("a",123);
map.put("b","abc");
System.out.println(map.get("a"));
System.out.println(map.get("b"));
}
}
集合工具类Collections