List和Queue都继承自Collection接口
list常规用法
List判断两个对象相等的标准:equals方法返回true
class A2 { public boolean equals(Object obj) { return true; } } public class ListTest2 { public static void main(String[] args) { List books = new ArrayList(); books.add(new String("一")); books.add(new String("二")); books.add(new String("三")); System.out.println(books); //[一, 二, 三] //调用A2对象的equals方法,只要equals方法返回true就视为相等,所以去掉了第一个元素 books.remove(new A2()); System.out.println(books);//[二, 三] books.remove(new A2()); System.out.println(books);//[三] } }
ListIterator()方法
public class ListIteratorTest { public static void main(String[] args) { List bookList = new ArrayList(); bookList.add("111111"); bookList.add("222222"); ListIterator lit = bookList.listIterator(); while (lit.hasNext()) { System.out.println(lit.next()); } System.out.println("=======下面开始反向迭代======="); while(lit.hasPrevious()) { System.out.println(lit.previous()); } } }
Queue集合
PriorityQueue实现类
public class PriorityQueueTest { public static void main(String[] args) { PriorityQueue pq = new PriorityQueue(); //下面代码依次向pq中加入四个元素 pq.offer(6); pq.offer(-3); pq.offer(9); pq.offer(0); //输出pq队列,并不是按元素的加入顺序排列, //而是按元素的大小顺序排列,输出[-3, 0, 9, 6] System.out.println(pq); //访问队列第一个元素,其实就是队列中最小的元素:-3 System.out.println(pq.poll()); } }
此优先队列不允许插入null值,有两种排序方式,与TreeSet类似
Deque与ArrayDeque
ArrayDeque作为栈来使用
public class ArrayDequeTest { public static void main(String[] args) { ArrayDeque stack = new ArrayDeque(); //依次将三个元素push入"栈" stack.push("java"); stack.push("C++"); stack.push("C#"); System.out.println(stack);//[C#, C++, java] System.out.println(stack.peek());//C# System.out.println(stack);//[C#, C++, java] System.out.println(stack.pop());//C# System.out.println(stack);//[C++, java] } }
作为队列来使用
public static void main(String[] args) { ArrayDeque queue = new ArrayDeque(); //依次将三个元素push入"栈" queue.offer("java"); queue.offer("C++"); queue.offer("C#"); System.out.println(queue);//[java, C++, C#] System.out.println(queue.peek());//java System.out.println(queue);//[java, C++, C#] System.out.println(queue.poll());//java System.out.println(queue);//[C++, C#] }
LinkedList实现了Deque接口,因此可以实现栈,队列的功能,不再举例