首页 > 应用开发 > Java > 总结一下java里的Collections
java 的集合类包含两部分,一部分是实现了接口Collection的类,另一部分是实现了接口Map的类.注意虽然后者没有实现Collection接口,但是它们都是Collections(不是Collection)的一部分.
下面的内容基于jdk1.5以上.其中用到了泛型.
下面之所以列出它们的方法,是为了让大家了解一下它们的规律
先看实现了Collection的类.
它的方法主要可以分为:1.添加,删除 2.查询 3.其他
1.添加,删除: boolean add(Object),boolean addAll(Collection extends E>)
boolean remove(Object) ,boolean removeAll(Collection>),boolean retainAll(Collection>),void clear()
2.查询. 查询操作不能直接进行,而只能通过Iterator来操作.方法iterator()用来返回一个作为内部类实现的Iterator
3.
其他 有查询大小的size(),有将集合转换为数组的Object[] toArray()和
总共15个方法
1.再来看它的子接口List
List
add(int index,Object),addAll(int index,Collection extends E> c)
remove(int index)
因为有了索引,所以查询可以直接进行,而不必通过Iterator
get(int index),set(int index,E element)
indexOf(Object) lastIndexOf(Object)
ListIterator
ListIterator
nextIndex()和previousIndex();以及set(E o),remove();
List
再来看实现了List
1.1 ArrayList
它在List
void ensuerCapacity( int minCapacity )
void trimToSize()
Object clone()
protected void removeRange(int from, int to)
ArrayList
1.2 LinkedList
它和ArrayList
void addFirst(Object),void addLast(Object),E removeFirst(),E removeLast()
E getFirst(),E getLast()
E element() 找到但不移除此列表的头(第一个元素)。
E peek() 找到但不移除此列表的头(第一个元素)。
E poll() 找到并移除此列表的头(第一个元素)。
boolean offer(E o) 将指定元素添加到此列表的末尾(最后一个元素)。
1.3 Vector
这
个还是和上面两个类有着同样的特点,即可以存放重复的元素,元素在里面是按添加的顺序存放的.不同的是,这个类的实现是线程安全的.在修改,移除,添加和
获取元素四种操作上,它在LinkedList
修改:void setElementAt(E,int index)[E set(int index,E o)]
移除:void removeElementAt(int index)[E remove(int index)]
添加:void insertElementAt(E, int index)[E add(int index,E o)]
void addElement(E o)
boolean removeElement(Object)
void removeAllElements()
获取:
E elementAt(int index)[E get(int index)]
E firstElement() ,E lastElement()
方括号里的是List
以上三个类都有一个无参的和一个以Collection extends E> c为参数的构造函数
List
下面来看Set
Set
Set
下面来看它的实现类
2.1 HashSet
它按元素的hashCode()来对元素进行降排序之后进行有序存放
它的方法都是在接口Set
2.1.1 LinkedHashSet
如果要按添加顺序存放元素,就可以用这个类.LinkedHashSet
2.2 SortedSet
这是一个接口,不是一个类.它的功能是,可以通过Comparator
它的方法除了从父接口继承过来的以外,还有:
Comparator
E first(),E last()
SortedSet
SortedSet
2.2.1 TreeSet
SortedSet
2.3 EnumSet
这是一个和枚举类型一起使用的专用的Set
它没有构造函数,而且它的所有方法都是static的.
它的方法有:
Collection的子接口和实现类到此告一段落,现在来看Map
Map
它的方法有:
添加:
V put(K key,V value)
void putAll(Map extends K,? extends V> t)
删除:
V remove(Object key),void clear()
查询:
V get(Object key)
与Collection
Set
注意前面说过,它不能包含重复的键,而键所映射的值可以相同.所以这里对键返回没有重复元素的Set接口,而对value返回可以有重复元素的Collection
Set
一个Map.Entry
boolean equals(Object o)
K getKey()
V getValue()
int hashCode()
V setValue(V value)
Map
boolean containsKey(Object key) ,boolean containsValue(Object value)
boolean equals(),int hashCode(),boolean isEmpty()
int size()
下面来看Map
1.1 HashMap
它对应于HashSet
它的方法都是从Map
1.1.1 LinkedHashMap
它对应于LinkedHashSet
1.2 SortedMap
它对应于SortedSet
方法也和SortedSet
Comparator
K firstKey(),K lastKey()
SortedMap
SortedMap
1.2.1 TreeMap
对应于TreeSet
1.3 EnumMap
主要的特点是,它的键必须是某一枚举类型的元素
Map
另外还有两个类要注意: Collections类和Arrays类
这里只说一下Arrays类:
它主要用于对数组进行操作.它的方法都是static的,它有几大类的方法
1.查找
int binarySearch(T[] a,T valueToFind)
其中T可以是任何原生类型或类类型
另外,还可以指定比较器,
2.填充
对数组进行填充
void fill(T[] a,T value)
其中T可以是任何原生类型或类类型
还可以指定填充范围
void fill(T[] a, int fromIndex, int toIndex, T val)
3.比较两数组是否包含完全一样的元素
boolean equals(T[] a,T[] b )
4.对数组进行排序
void sort( T[] a )
void sort( T[] a ,int fromIndex, int toIndex)
void sort( T[] a ,Comparator c)
void sort( T[] a ,int fromIndex, int toIndex,Comparator c)
其中T可以是任何原生类型
5.将数组转换为字符串
String toStrint(T[] a)
其中T可以是任何原生类型
6.将数组转换为List
在我的博客的其他文章里,有对上面讲到的部分内容进行举例.
=======================================
欢迎指正,欢迎评论,欢迎交流
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29445577/viewspace-1075914/ ,如需转载,请注明出处,否则将追究法律责任。