Java Collections

参考
菜鸟

Outline

集合接口
Java Collections_第1张图片

  • List
  • Set
  • Queue
  • Map

Why using interface instead of class!!!
主要还是方便改

Method from java.util.Collection

addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray

迭代器

不关心容器的通用方法,工作是遍历并选择容器中的对象
java中迭代器只能单向移动

List l = new ArrayList();
Iterator it = l.interator(); // 容器返回一个Iterator对象,指向第一个元素前面
while(it.hasNext()) {
	Integer i = it.next();
	it.remove();
}

Methods

所有collection都包含的方法

  • addall()
  • add()
  • 打印不需要toString(),可以直接打印

List

ArrayList随机访问更快,但是插入删除较慢,LinkedList插入删除较快

  • ArrayList
  • LinkedList
  • Vector: 线程安全

ArrayList Methods

https://mp.csdn.net/mdeditor/88841727

  • size()
  • add()
  • replace()
  • remove()
  • get()
  • subList()

LinkedList

List l = new LinkedList(); 有些LinkedList的方法就用不了了,比如addFirst()

  • 这种到底应该怎么用??

  • 可以用来实现Stack 和 Queue

  • 常用方法:

    • addFirst()插在首部, add()==addLast(),都插在尾部

Stack

可以自己用LinkedList实现一个,想要使用自己的stack类,就要在创建实例的时候完整的指定包名,否则会与java.util中的Stack发生冲突
java.util.Stack 也可以直接用

Queue

Throws exception Returns special value
Insert add(e) offer(e) false
Remove remove() poll() null
Examine element() peek() null
  • Queue只是接口,所以常用Queue<> q = new LinkedList<>();
  • 其他implementing class 包括AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

Set

继承自Collections接口,Set也是接口

  • HashSet(散列/哈希)
  • TreeSet(红黑树,平衡查找树)是SortedSet,可以通过自定义Comparable接口的compareTo方法自定义排序方式
  • LinkedHashSet(散列/哈希)

Map

有一大堆

  • HashMap: 它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的
  • HashTable: 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。
    LinkedHashMap
  • TreeMap: 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。
Map m = new HashMap();
m.put(key, value);
m.get(key);
m.remove(key);
m.clear();
m.containsKey();
m.keySet();
// for each 或者interator遍历
for(Iterator it=m.iterator();it.hasNext();){
	it.next() 
}

你可能感兴趣的:(程序随笔,面试)