您的位置:首页 > 编程语言 > Java开发

java基础-----集合

2016-04-12 18:03 453 查看
集合
循环数组与链表
循环数组比链表更高效,但是循环数组是一个有界的集合,容量有限
Collection接口:集合类的基本接口
Iterator接口
迭代器的用法
Collection<String> c = ...
Iterator<String> iter =c.iterator();
while(iter.hasNext()){
String element = iter.next();
do something with element
}
hasNext()方法是为了判断下一个数是否存在,如果不用这个方法直接next()方法,当集合到末尾时,没有数据可取,会报一个NoSuchElementException
上述表达式也可以用foreach来表示
for(String element : c){
do something with element
}
当调用next时,迭代器就越过下一个元素,并返回刚刚越过的那个元素的引用
调用remove之前,必须先调用next,否则抛出IllegalStateException
具体集合:
collection
list set Map
ArrayList Hashset HashMap
LinkedList Treeset TreeMap

所有集合
ArrayList
LinkedList
ArrayDeque
HashSet
TreeSet
EnumSet
LinkedHashSet
PriorityQueue
HashMap
TreeMap
EnumMap
LinkedHashMap
WeakHashMap
IdentityHashMap
对于迭代器遍历集合,根据需要给容器附加许多迭代器,但是这些迭代器只能读取列表,另外,再单独附加一个既能读又能写的迭代器。

API
java.util.List<E>

ListIterator<E>listIterator()
返回一个列表迭代器
ListIterator<E>listIterator(int index)
返回一个列表迭代器,这个元素是第一次调用Next返回的给定索引的元素
void add(int I, Eelement)
在给定位置添加元素
void addAll(int I,Collection<? extends E> elements)
将某个集合中的所有元素添加到给定位置
E remove(int i)
删除给定位置的元素并返回这个元素
E set(int i , Eelement)
用新元素取代给定位置的元素,并返回原来的那个元素
intindextOf(Object element)
返回与指定元素相等的元素在列表中第一次出现的位置,没有就返回-1
intlastIndexOf(Object element)
返回与指定元素相等的元素在列表中最后一次出现的位置,没有就返回-1

java.util.ListItertor<E>

void add (Eelement)
在当前位置添加一个元素
void set (EnewElement)
用新元素取代next或previous上次访问的元素
booleanhasPrevious()
当反向迭代列表时,还可供访问的元素,返回true
E previous()返回前一个对象
int nextIndex()返回下一次调用next方法时将返回的元素索引
intprevoiusIndex()
返回下一次调用previous方法时将返回的元素索引

java.util.LinkedList

LinkedList()
构造一个空链表
LinkedList(Collection<? extend E> elements )构造一个链表,并将集合中所有的元素添加到这个链表中
void addFirst(E element )
void addLast(Eelement )
E getFirst()
E getLast()
E removeFirst()
E removeLast()

数组列表

散列表:HashSet
API:
HashSet()
构建一个空的散列集
HashSet(Collection<?extends E> element)
构建一个散列集,并将集合中的所有元素添加到这个散列集中
HashSet(intinitialCapacity)
构建一个空的具有指定容量的散列集
HashSet(intinitialCapacity , float loadFactor)
构建一个空的具有指定容量和填充因子的散列集
填充因子:一个0.0~1.0之间的数值,确定散列集填充的百分比
注:如果equals()相等,hashCode()也必须相等,equals()不相等,hashCode()尽量不相等
树集:TreeSet
与hashSet相似,只是树集是一个有序集合
对象比较
compareTo
compare
comparator
队列和双端队列
API
java.util.Queue<E>
boolean add (Eelement)
boolean offer(Eelement)
如何队列没有满,将给定的元素添加到这个双端队列的尾部并返回true。如果队列满了,第一个方法抛出IllegaStateException,第二个方法返回false
E remove()
E poll()
假如队列不空,删除并返回这个队列头部的元素。如果队列为空,第一个方法抛出NosuchElementException,第二个方法返回null
E element()
E peek()
假如队列不空,返回这个队列头部元素,但不删除。如果队列为空,第一个方法抛出NosuchElementException,第二个方法返回null

java.util.Deque<E>
void addFirst(Eelement)
void addLast(Eelement)
booleanofferFirst(E element)
booleanofferLast(E element)
将给定的对象添加到双端队列的头部或者尾部。如果队列满了,前面两个方法抛出IllegaStateException,后面两个方法返回false
E removeFirst()
E removeLast()
E pollFirst()
E pollLast()
假如队列不空,删除并返回这个队列头部的元素。如果队列为空,前面两个方法抛出NosuchElementException,后面两个方法返回null
E getFirst()
E getLast()
E peekFirst()
E peekLast()
假如队列不空,返回这个队列头部元素,但不删除。如果队列为空,前面两个方法抛出NosuchElementException,后面两个方法返回null

java.util.ArrayDeque<E>
ArrayDeque()
ArrayDeque(intinitialcapacity)
用初始容量16或者给定的初始容量构造一个无限双端队列

优先级队列
priority queue中的元素可以按照任意的顺序插入,却总是按照排序的顺序进行检索

map
API
java.util.Map<K,V>
V get(Object key)
获得与键对应的值
V put(K key, V value)
将键和值放到映射表
void putAll(Map<? extends K,?extends V > entries)在映射表中添加映射表
boolean containKey(Object key)
boolean containValue(Objectvalue)
Set<Map.Entry<K, V>> entrySet()获得所有entry(包括键和值)的集合
Set<K> keySet()
获得所有键的集合
Collection<V> values()获得所有值的集合

java.util.Map.Entry<K, V>
K getKey()
V getValue()
V setValue(V newValue)
设置在映射表中与新值对应的值,返回旧值

java.util.HashMap<K, V>
HashMap()
HashMap(int initialCapacity)
HashMap(int initialCapacity,Loadfloat)
构建一个散列映射表
构建一个空的具有指定容量的散列映射表
构建一个空的具有指定容量和填充因子的散列映射表
填充因子:一个0.0~1.0之间的数值,确定散列散列映射表填充的百分比,默认是0.75

java.util.TreeMap<K, V>
TreeMap(comparator< ? super K > c)构造一个树映射表,并使用一个指定的比较器对键进行排序
TreeMap(Map< ? extends K, ?extends V > entries )构造一个树映射表,并将某个映射表中的所有条目添加到树映射表中
TreeMap( SortedMap<? extendsK, ? extends V> entires)
构建一个树映射表,将某个映射表中的所有条目添加到树映射表中,并使用与给定的有序映射表相同的比较器

java.util.SortedMap< K,V>
Comparator<? super K> comparator()
返回对键排序的比较器,如果键是用Comparable接口的compareTo方法进行比较的,返回null
K firstKey()
K lastKey()
返回映射表中最小元素和最大元素

弱散列映射表WeakHashMap

链接散列集LinkedHashSet
链接映射表LinkedHashMap
EnumSet 枚举集 一个枚举类型元素集的高效实现
EnumMap 映射表 一个键类型为枚举类型的映射表

API
java.util.WeakHashMap<K, V>
WeakHashMap() 构建一个散列映射表
WeakHashMap(int initialCapacity)构建一个空的具有指定容量的散列映射表
WeakHashMap(int initialCapacity,Loadfloat)构建一个空的具有指定容量和填充因子的散列映射表

java.util.LinkedHashSet<E>
LinkedHashSet()
构建一个空链接散列集
LinkedHashSet(intinitialCapacity)构建一个空的具有指定容量的空链接散列集
LinkedHashSet(intinitialCapacity, Loadfloat)构建一个空的具有指定容量和填充因子的空链接散列集

java.util.LinkedHashMap<K, V>
LinkedHashSet()

LinkedHashSet(intinitialCapacity)
LinkedHashSet(intinitialCapacity, Loadfloat)
LinkedHashSet(intinitialCapacity, Loadfloat,booleanaccessOrder)
构建一个空的具有指定容量和填充因子和顺序的空链接散列映射表
protected booleanremoveEldestEntry(Map.Entry<K, V> eldest)
如果想删除eldest元素,并返回true,就应该覆盖这个方法。

Java.util.EnumSet<E extendsEnum<E>>
static <E extends Enum<E>> EnumSet<E> allOf(Class<E> enumType)
返回一个包含给定枚举类型的所有值的集合
static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> enumType)
返回一个空集,并有足够的空间保存给定的枚举类型的所有值
static <E extends Enum<E>> EnumSet<E> range(E from, E to)
返回一个包含from~ to之间的所有值(包含两个边界)的集
static <E extends Enum<E>> EnumSet<E> range(E value)
static <E extends Enum<E>> EnumSet<E> range(E value,E
…values)
返回包括给定值的集

java.util.EnumMap<K extendsEnum<K>, V>
EnumMap(Class<K> keyType)
构造一个键为给定类型的空映射集

java.util.IdentityHashMap<K,V>
IdentityHashMap()
IdentityHashMap(intexpectedMaxSize)
构造一个空的标识散列映射集,其容量是大于1.5*expectedMaxSize的2的最小次幂,默认expectedMaxSize为21

java.lang.System
static intidentityHashCode(Object obj)
返回Object.hashCode计算出来的相同散列码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: