Iterator接口是所有集合的超级接口,它有两个主要的子接口Collection和Map,Java集合类主要从这两个接口派生而来。
Collection接口是Set,Queue和List接口的父接口。
与枚举类型一起使用的专用Set实现。枚举set中所有键都必须来自单个枚举类型,该枚举类型在创建set时显式或隐式地指定。枚举set在内部表示为位向量。此表示形式非常紧凑且高效。不允许使用null元素。
import java.util.Arrays; import java.util.EnumSet; public class EnumSetTest{ enum Color{ RED,GREEN,BLUE; } public static void main(String[] args) { EnumSet<Color> enumSet1=EnumSet.noneOf(Color.class);//创建一个具有指定元素类型的空枚举set enumSet1.add(Color.RED);//向枚举set里面添加元素,只能添加Color中的枚举实例 EnumSet<Color> enumSet2=EnumSet.allOf(Color.class);//创建一个包含指定元素类型的所有元素的枚举set EnumSet<Color> enumSet3=EnumSet.of(Color.RED);//创建一个最初包含指定元素的枚举set,of方法里面的参数可以是多个 EnumSet<Color> enumSet4=EnumSet.range(Color.RED,Color.GREEN);//创建一个最初包含由两个指定端点所定义范围内的所有元素的枚举set System.out.println(Arrays.toString(enumSet2.toArray()));//显示枚举set里的元素,输出结果是[RED, GREEN, BLUE] } }
import java.util.TreeSet; public class TreeSetTest{ public static void main(String[] args) { TreeSet<String> treeSet=new TreeSet<String>(); treeSet.add("RED");//向TreeSet中添加一个元素 treeSet.add("GREEN");//向TreeSet中添加一个元素 treeSet.add("BLUE");//向TreeSet中添加一个元素 System.out.println(treeSet);//输出:[BLUE, GREEN, RED],集合处于有序状态 System.out.println(treeSet.first());//输出集合第一个元素 System.out.println(treeSet.last());//输出集合最后一个元素 System.out.println(treeSet.headSet("lavor_zl"));//返回小于"lavor_zl"的子集 System.out.println(treeSet.tailSet("lavor_zl"));//返回大于等于"lavor_zl"的子集 System.out.println(treeSet.subSet("BLUE", "GREEN"));//返回大于等于"BLUE"且小于"GREEN"的子集 } }
import java.util.HashSet; public class HashSetTest{ public static void main(String[] args) { HashSet<String> hashSet = new HashSet<String>(); hashSet.add("RED");//向HashSet中添加一个元素 hashSet.add("GREEN");//向HashSet中添加一个元素 hashSet.add("BLUE");//向HashSet中添加一个元素 hashSet.contains("RED");//查看某个元素是否在HashSet中 hashSet.remove("RED");//删除HashSet中的一个元素 hashSet.clear();//清空HashSet中的所有元素 } }
import java.util.PriorityQueue; public class PriorityQueueTest{ public static void main(String[] args) { PriorityQueue<Integer> pQueue=new PriorityQueue<Integer>(); pQueue.offer(2014);//向pQueue尾部加入一个元素,即让一个元素进队 pQueue.offer(11); pQueue.offer(18); System.out.println(pQueue);//输出队列,结果是[11, 2014, 18] System.out.println(pQueue.peek());//获取队头元素,但是不删除该元素,输出值是11 System.out.println(pQueue.poll());//获取队头元素,并删除该元素,输出值是11 System.out.println(pQueue.poll());//获取队头元素,并删除该元素,输出值18 } }
import java.util.ArrayDeque; public class ArrayDequeTest{ //ArrayDeque当双端队列使用 public static void deque(){ ArrayDeque<String> deque=new ArrayDeque<String>(); deque.offerFirst("lavor");//双端队列开头加入一个元素 deque.offerLast("zl");//双端队列结尾加入一个元素 deque.peekFirst();//获取双端队列第一个元素,但不删除该元素 deque.peekLast();//获取双端队列最后一个元素,但不删除该元素 deque.pollFirst();//获取双端队列第一个元素,并删除该元素 deque.pollLast();//获取双端队列最后一个元素,并删除该元素 } //ArrayDeque当栈使用 public static void stack(){ ArrayDeque<String> stack=new ArrayDeque<String>(); stack.push("lavor");//进栈 stack.push("zl");//进栈 stack.pop();//出栈 } public static void main(String[] args) { deque(); stack(); } }
import java.util.Deque; import java.util.LinkedList; import java.util.List; public class LinkedListTest{ //实现Deque所具有的功能 public static void deque(){ Deque<String> deque=new LinkedList<String>(); //当双端队列使用 deque.offerFirst("lavor");//双端队列开头加入一个元素 deque.offerLast("zl");//双端队列结尾加入一个元素 deque.peekFirst();//获取双端队列第一个元素,但不删除该元素 deque.peekLast();//获取双端队列最后一个元素,但不删除该元素 deque.pollFirst();//获取双端队列第一个元素,并删除该元素 deque.pollLast();//获取双端队列最后一个元素,并删除该元素<String> deque=new ArrayDeque<String>(); //当栈使用 deque.push("lavor_zl");//进栈 deque.pop();//出栈 } //实现List所具有的功能 public static void list(){ List<String> list=new LinkedList<String>(); list.add("lavor_zl");//LinkedList加入一个元素 list.add("lavor");//LinkedList加入一个元素 list.set(0, "zl");//设置指定位置元素的值 list.get(1);//获取指定索引位置的元素,索引从0开始 } public static void main(String[] args) { list(); deque(); } }
Map用于保存映射关系的数据。Map集合保存两组值,一组用于保存Map的Key,另一组用于保存Map的Value。将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射到一个值。
import java.util.EnumMap; enum Color{ RED,GREEN,BLUE } public class EnumMapTest{ public static void main(String[] args) { EnumMap<Color, String> enumMap=new EnumMap<Color, String>(Color.class); enumMap.put(Color.RED, "red");//向EnumMap加入一个key-value对 enumMap.put(Color.GREEN, "green");//向EnumMap加入一个key-value对 enumMap.get(Color.RED);//获取key值对应的value值 enumMap.keySet();//获取enumMap的所有key值的集合 } }
import java.util.HashMap; public class HashMapTest{ public static void main(String[] args) { HashMap<String,String> hashMap=new HashMap<String,String>(); hashMap.put("lavor_zl", "HashMap");//向HashMap加入一组key-value对 hashMap.put("lavor", "Map");//向HashMap加入一组key-value对 hashMap.put("lavor", "Hash");//向HashMap加入一组key-value对 hashMap.get("lavor_zl");//获取对应key值的value System.out.println(hashMap);//输出HashMap,输出结果是{lavor=Hash, lavor_zl=HashMap},说明HashMap是无序的,并且当加入一个已经存在的key值对应的key-value后会覆盖掉原来的key-value hashMap.isEmpty();//判断HashMap是否为空 hashMap.containsKey("lavor_zl");//查看HashMap中是否包含某一个key值 hashMap.containsValue("Map");//查看HashMap中是否包含某一个value值 hashMap.keySet();//获取HashMap的key值集合 hashMap.values();//获取HashMap的value值集合 hashMap.size();//获取HashMap的大小即包含key-value对的个数 } }
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class PropertiesTest{ public static void main(String[] args) { Properties props=new Properties(); props.setProperty("lavor_zl", "PropertiesTest");//向Properties中加入一个key-value对 props.setProperty("lavor", "Properties");//向Properties中加入一个key-value对 props.getProperty("lavor_zl");//获取某一个key值对应的value值 props.getProperty("lavor_zl","default");//获取某一个key值对应的value值,若没有该key,则返回一个默认值 try { //将props中的key-value对保存到store.txt中 props.store(new FileOutputStream("store.txt"), "properties"); Properties props2=new Properties(); //将store.txt中的key-value对追加到props2中 props2.load(new FileInputStream("store.txt")); System.out.println(props2);//输出结果:{lavor=Properties, lavor_zl=PropertiesTest} } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
import java.util.TreeMap; public class TreeMapTest{ public static void main(String[] args) { TreeMap<String,String> treeMap=new TreeMap<String,String>(); treeMap.put("lavor_zl", "TreeMapTest");//向TreeMap中加入一个key-value对 treeMap.put("lavor", "TreeMap");//向TreeMap中加入一个key-value对 treeMap.get("lavor_zl");//获取某一key值对应的value值 System.out.println(treeMap);//输出TreeMap,输出结果:{lavor=TreeMap, lavor_zl=TreeMapTest},说明TreeMap已排序 } }
import java.util.WeakHashMap; class WeakHashMapTest{ public static void main(String[] args) { WeakHashMap<String,String> weak=new WeakHashMap<String,String>(); weak.put("lavor_zl", "WeakHashMapTest");//向WeakHashMap中加入一个key-value对 weak.put(new String("lavor"), "WeakHashMap");//向WeakHashMap中加入一个key-value对,此时的key值是匿名字符串对象,没有引用 weak.get("lavor_zl");//获取某一key值对应的value值 System.out.println(weak);//输出结果:{lavor=WeakHashMap, lavor_zl=WeakHashMapTest} System.gc();//通知系统进行垃圾回收 System.out.println(weak);//输出结果:{lavor_zl=WeakHashMapTest} } }