11.4 容器的打印
PrintingContainers
class PrintingContainers {
static Collection fill(Collection<String> collection) {
collection.add("rat");
collection.add("cat");
collection.add("dog");
collection.add("dog");
return collection;
}
static Map fill(Map<String,String> map) {
map.put("rat","1");
map.put("cat","2");
map.put("dog","3");
map.put("dog","4");
return map;
}
public static void chapter11_4() {
//Collection
System.out.println(fill(new ArrayList<>()));
System.out.println(fill(new LinkedList<>()));
System.out.println(fill(new HashSet<>())); //fastest
System.out.println(fill(new TreeSet<>())); //比较的顺序
System.out.println(fill(new LinkedHashSet<>())); //被添加的顺序
//Map
System.out.println(fill(new HashMap<>())); //fastest
System.out.println(fill(new TreeMap<>())); //比较的顺序
System.out.println(fill(new LinkedHashMap<>())); //被添加的顺序
}
}
(1)Collection:
List:ArrayList,LinkedList
Set:HashSet,TreeSet,LinkedHashSet
Queue:LinkedList
(2)Map:
HashMap,TreeMap,LinkedHashMap
11.11 Queue
QueueDemo
扫描二维码关注公众号,回复:
12722878 查看本文章

class QueueDemo {
static void printQ(Queue queue) {
while(queue.peek() != null) {
System.out.print( " " + queue.remove());
}
System.out.println();
}
static void chapter11_11() {
Queue<Integer> queue = new LinkedList<>();
Random random = new Random(7);
for(int i=0;i<10;i++) {
queue.offer(random.nextInt(10));
}
printQ(queue);
}
}
Queue是个接口,LinkedList实现了这个接口
PriorityQueueDemo
class PriorityQueueDemo {
static void chapter11_11() {
List<Integer> list = Arrays.asList(7,17,27,37,40);
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(list);
QueueDemo.printQ(priorityQueue);
priorityQueue = new PriorityQueue<>(list.size(),Collections.reverseOrder());
priorityQueue.addAll(list);
QueueDemo.printQ(priorityQueue);
}
}
默认排序将使用对象在队列中的自然排序,可以通过自己的Comparator来修改这个顺序
11.13 Foreach与迭代器
ModifyingArraysAsList
class ModifyingArraysAsList {
static void chapter11_13() {
Random random = new Random(7);
Integer[] ia = {1, 2, 3, 4, 5, 6, 7};
List<Integer> list1 = new ArrayList<>(Arrays.asList(ia));
System.out.println("before:" + list1);
Collections.shuffle(list1,random);
System.out.println("after:" + list1);
System.out.println("Arrays.toString(ia):" + Arrays.toString(ia));
System.out.println("ia:" + ia);
List<Integer> list2 = Arrays.asList(ia);
System.out.println("before:" + list2);
Collections.shuffle(list2,random);
System.out.println("after:" + list2);
System.out.println("Arrays.toString(ia):" + Arrays.toString(ia));
System.out.println("ia:" + ia);
}
}
(1)Arrays.asList()被传递给了我ArrayList()构造函数,则新创建引用list1
(2)Arrays.asList()产生的list2对象会使用底层数组作为物理实现
11.14 总结
简单的容器分类