java基础-----集合

来源:互联网 发布:淘宝照片怎么拍 编辑:程序博客网 时间:2024/06/06 09:42

集合

循环数组与链表

循环数组比链表更高效,但是循环数组是一个有界的集合,容量有限

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) 用新元素取代nextprevious上次访问的元素

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.01.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.01.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< KV>

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, LoadfloatbooleanaccessOrder)

构建一个空的具有指定容量和填充因子和顺序的空链接散列映射表

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 valueE …values)

返回包括给定值的集


java.util.EnumMap<K extendsEnum<K>, V>

EnumMap(Class<K> keyType)

构造一个键为给定类型的空映射集


java.util.IdentityHashMap<K,V>

IdentityHashMap()

IdentityHashMap(intexpectedMaxSize)

构造一个空的标识散列映射集,其容量是大于1.5*expectedMaxSize2的最小次幂,默认expectedMaxSize21




java.lang.System

static intidentityHashCode(Object obj)

返回Object.hashCode计算出来的相同散列码


0 0