Java编程思想之集合操作
重新复习了一下Java的集合操作
Java简单容器(集合)分类:
点框表示接口,实框表示具体类,空心箭头表示特定类实现接口,实心箭头表示某类可以生成箭头所指类的对象
完整容器分类:
集合方法汇总
arraylist随机访问快,linklist插入删除快
hashset使用hash散列,获取元素很快,Treeset使用红黑树,按照比较结果升序保存,linkedhashset用来链表按照被添加的顺序保存,用hash保留查找速度
hashmap没有顺序,查找快,Treemap按照比较结果升序保存key ,LinkedHashMap按照插入结果保存Key,保留查找速度
Vector ,Hashtable,Stack弃用
1 |
Collection: [add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray] |
List
contains() , remove() , indexOf() , subList() , cantainsAll() ,Collections.sort() , Collections.shuffle()//打乱,retainAll()
1 |
package holding; |
迭代器
迭代器统一了对容器的访问方式iterater() next() hasNext() remove()
1 |
package holding; |
listIterator 可双向移动
1 |
package holding; |
LinkedList 特色
添加了可以作为栈,队列和双端队列的方法,
getfirst(),element()返回第一个元素,空时抛出nosuchElementException,peek()空时返回null;
removeFirst()与remove()移除返回列表头,若空,抛出NoSuchElementsException,poll()空时返回null。
addFirst(),add(),addLast(),removelast()
1 |
package holding; |
Set
add(),contains(),addAll(),
TreeSet默认按照字典顺序排列,可以使用如下方法按字母序排序
1 |
Set<String> tset=new TreeSet<String>(String.CASE_INSENTIVE_ORDER); |
1 |
package holding; |
Map
get(),put(),containsKey(),containsValue(),keySet(),values()
1 |
package holding; |
values可以为任何对象,包括列表
1 |
//: holding/MapOfList.java |
Queue
offer()插入队尾,peek()和element()返回队头,poll()和remove()移除并返回队头
1 |
package holding; |
PriorityQueue
默认最小值拥有最高的优先级,可以提供自己的comparator对象来改变排序如Collection.reverseOrder()
1 |
package holding; |
AbstractCollection
当要实现一个不是Collection外部类时会用到,要强制实现iterator()和size()
1 |
package holding; |
如果类已经继承其他的类,就不能再继承AbstractCollection了,可以实现Collection,实现其中所有方法
1 |
package holding; |
Foreach
Iterable接口中有一个iterator()方法,如果创建了实现Iterable的类,都可以将他们用于foreach中
1 |
package holding; |
foreach可以用于数组或其他任何Iterabe,但数组不是一个iterable
1 |
package holding; |
反向foreach
1 |
package holding; |