第十一章:持有对象(下)
来源:互联网 发布: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
- 第十一章:持有对象(下)
- java编程思想读书笔记 第十一章 持有对象(下)
- 第十一章 持有对象
- 第十一章 持有对象
- 第十一章 持有对象
- 第十一章 持有对象
- 第十一章 持有对象
- 第十一章 持有对象
- 第十一章:持有对象
- 第十一章:持有对象(上)
- 第十一章、持有对象(容器)
- 第十一章 持有对象 导读
- 第十一章:持有对象(容器)
- java编程思想读书笔记 第十一章 持有对象(中)
- Java编程思想 第十一章 持有对象(容器)
- java编程思想读书笔记 第十一章 持有对象(总结)
- Java编程思想笔记第十一章(持有对象)
- JAVA编程思想-第十一章 持有对象
- List ArrayList LinkedList 初探
- java实现导出Excel(跨行,跨列)
- AngularJS 核心特性
- 整点刷新
- Gradle常用配置
- 第十一章:持有对象(下)
- 学生选课-集合案例
- 常用颜色
- WAMP3.0允许局域网访问
- 欢迎使用CSDN-markdown编辑器
- nikon 协议
- 深入理解Java虚拟机 二、JVM垃圾收集算法与垃圾收集器
- C++头文件的三种标准
- 线程池