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); } } }
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")); } }