袋子重点:1、放 增加 2、取, 3、放之后,调整顺序,4、查找
1、List ,保持不变,有点像队列,先排先得到;加工一下,就形成Stack,先放仓库的东西,后取。
1》ArrayList:随便在袋子取一件东西最快。
2》LinkedList优点:
2.1 在中间放(加),扔掉(删除)东西最快。
2.2 在ArrayList基础上增加很多方法,使它可以成为a Stack,a Queue。
头:得到第一个值:getFirst( )=element( )=peek(),删除:removeFirst( )=remove( )=pool, 增加:addFirst( )
尾:得到最后一个值:删除:removeLast( ) , 增加:offer( )=add( )=addLast( )
peek(),pool() 就是如果没有值的情况下,报错不一样。
2、Stack :push 压:来一个人,总是排第一
pop 弹出:总是从第一个人开始出去。
Stack的方法:由LinkedList 方法实现。
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(); } } // |
头删除,尾部增加
package holding; import java.util.LinkedList; import java.util.Queue; import java.util.Random; public class QueueDemo { public static void OutQ(Queue queue) { while (queue.peek() != null) System.out.print(queue.remove() + " "); System.out.println(); } public static void main(String[] args) { Queue<Integer> queue = new LinkedList<Integer>(); Random rand = new Random(47); for (int i = 0; i < 10; i++) queue.offer(rand.nextInt(i + 10));//加 OutQ(queue);//出 } } |
1》int 默认 从小到大。可以用Collections 静态方法调整次序也可以自己增加方法。
2》char 默认 A,B,C.......
package holding; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.PriorityQueue; import java.util.Random; public class PriorityQueueDemo { public static void main(String[] args) { PriorityQueue<Integer> priorityQueue = new PriorityQueue<Integer>(); Random rand = new Random(47); for (int i = 0; i < 10; i++) priorityQueue.offer(rand.nextInt(i + 10));//通过加的时候排序 QueueDemo.OutQ(priorityQueue);//出 //int 从小--大排 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);//定义时开始排序 QueueDemo.OutQ(priorityQueue); //int 从大--小排 //定义时开始排序,通过Collections.reverseOrder()静态方法。 priorityQueue = new PriorityQueue<Integer>(ints.size(),Collections.reverseOrder()); priorityQueue.addAll(ints); QueueDemo.OutQ(priorityQueue); //String 从小--大排 String fact = "EDUCATION SHOULD ESCHEW OBFUSCATION"; List<String> strings = Arrays.asList(fact.split("")); PriorityQueue<String> stringPQ = new PriorityQueue<String>(strings); QueueDemo.OutQ(stringPQ); //反String 从大--小排 stringPQ = new PriorityQueue<String>(strings.size(), Collections.reverseOrder()); stringPQ.addAll(strings); QueueDemo.OutQ(stringPQ); } } 0 1 1 1 1 1 3 5 8 14 1 1 2 3 3 9 9 14 14 18 18 20 21 22 23 25 25 25 25 23 22 21 20 18 18 14 14 9 9 3 3 2 1 1 A A B C C C D D E E E F H H I I L N N O O O O S S S T T U U U |