第十一章:持有对象(下)

来源:互联网 发布:python特点 编辑:程序博客网 时间:2024/05/23 12:06

11.8 Stack

“ 栈 ” 通常是指“ 后进先出 ” (LIFO)的容器。在编程语言中经常用来对表达式求值。

public class Stack<T> {  private LinkedList<T> storage = new LinkedList<T>();  // 添加元素  public void push(T v) { storage.addFirst(v); }  // 得到栈顶元素  public T peek() { return storage.getFirst(); }  // 删除栈顶元素  public T pop() { return storage.removeFirst(); }  // 判断栈是否为空  public boolean empty() { return storage.isEmpty(); }  public String toString() { return storage.toString(); }}

11.9 Set

HashSet专门对查找进行了优化。使用了散列。
TreeSet将元素存储在红-黑树数据结构中

11.11 Queue

队列是典型的 “先进先出” (FIFO)的容器。即从容器的一端放入,从另一端取出。并且事物放入容器的顺序与取出的顺序是相同的。

offer():向队列尾部插入元素,或者返回false

11.11.11 PriorityQueue(优先级队列)

队列是先进先出原则的容器。队列中的offer() 方法插入一个对象时,是插在队列尾,而PriorityQueue的offer()方法是在插入时会被排序,默认是使用自然顺序,可以传入Comparator来修改顺序。
PriorityQueue(优先级队列)是排序好的队列(根据Comparator)。

public class PriorityQueueDemo {    public static void main(String args[]) {        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();        Random random = new Random(47);        for (int i = 0; i < 10; i++) {            priorityQueue.offer(random.nextInt(i + 10));        }        System.out.println(priorityQueue);        List<Integer> ints = Arrays.asList(25, 22, 20,                18, 14, 9, 3, 1, 1, 2, 3, 9, 14, 18, 21, 23, 25);        priorityQueue = new PriorityQueue<Integer>(ints);        System.out.println(priorityQueue);        priorityQueue = new PriorityQueue<Integer>(                ints.size(), Collections.reverseOrder());        priorityQueue.addAll(ints);        System.out.println(priorityQueue);        String fact = "EDUCATION SHOULD ESCHEW OBFUSCATION";        List<String> strings = Arrays.asList(fact.split(""));        PriorityQueue<String> stringPQ =                new PriorityQueue<String>(strings);        System.out.println(stringPQ);        stringPQ = new PriorityQueue<>(strings.size(),Collections.reverseOrder());        stringPQ.addAll(strings);        System.out.println(stringPQ);    }}

实现了Iterable的类才可以使用foreach循环(数组除外)

Map 没有实现Iterable因此如果想遍历Map的这么办:

for(Map.Entry entry: System.getenv().entrySet()) {   System.out.println(entry.getKey() + ": " +    entry.getValue());}
0 0
原创粉丝点击