集合——待整理



Map     Collection 接口规范建议,子类需有一个空参的protected的构造方法
1.     collection    
java.util  
interface
extends Iterable
方法:
                    
 Object[]toArray() 
          返回包含此 collection 中所有元素的数组。
<T> T[]
toArray(T[] a) 
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

 booleanretainAll(Collection<?> c) 
          仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。

2.     Iterable
java.lang
interface
3.     Iterator
java.util
interface
4.     Map
java.util
interface
内部接口
static interfaceMap.Entry<K,V> 
          映射项(键-值对)。
方法:
Set<Map.Entry<K,V>>entrySet() 
          返回此映射中包含的映射关系的 Set 视图。
 Set<K>keySet() 
          返回此映射中包含的键的 Set 视图。
 voidputAll(Map<? extends K,? extends V> m) 
          从指定映射中将所有映射关系复制到此映射中(可选操作)。

5.ListIterator
interface
java.util
extends Iterator
previous逆向 next正向
6. List
java.util
interface
元素有顺序,可以重复
extends Collection
方法:
 voidadd(int index, E element) 
          在列表的指定位置插入指定元素(可选操作)。
 booleanaddAll(int index, Collection<? extends E> c) 
          将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。
 Iterator<E>iterator() 
          返回按适当顺序在列表的元素上进行迭代的迭代器。
 ListIterator<E>listIterator() 
          返回此列表元素的列表迭代器(按适当顺序)。
 ListIterator<E>listIterator(int index) 
          返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。
 booleanretainAll(Collection<?> c) 
          仅在列表中保留指定 collection 中所包含的元素(可选操作)。
 List<E>subList(int fromIndex, int toIndex) 
          返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。
7.Set
java.util
interface
元素无顺序,但按照元素hashcode进行存放,不可以重复,最多包含一个null元素
extends Collection
8.Queue
java.util
interface
有2类方法:
                                                                      添加                    删除                    列举
     第一类throws exception:                         add(e)               remove()               element()
     第二类返回特殊数据(false或null):              offer(e)               poll()                    peek()
9.SortedMap
java.util
interface
extends Map
默认按照键值自然顺序进行排序
 Comparator<? superK>comparator() 
          返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null
 SortedMap<K,V>headMap(K toKey) 
          返回此映射的部分视图,其键值严格小于 toKey
 SortedMap<K,V>subMap(K fromKey, K toKey) 
          返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。
 SortedMap<K,V>tailMap(K fromKey) 
          返回此映射的部分视图,其键大于等于 fromKey

10.AbstractMap
java.util
class
extends Object
implements Map

transient volatile Set<K> keySet = null;
transient volatile Collection<V> values = null;

内部类:
static classAbstractMap.SimpleEntry<K,V> 
          维护键和值的 Entry。
static classAbstractMap.SimpleImmutableEntry<K,V> 
          维护不可变的键和值的 Entry。
从接口 java.util.Map 继承的嵌套类/接口
Map.Entry<K,V>
方法:
protected  Objectclone() 
          返回此 AbstractMap 实例的浅表副本:不复制键和值本身。
11.AbstractCollection
java.util
class
implementes Collection
12.AbstractList
java.util
class
extends AbstractCollection
implements List
支持“随机访问”,AbstractSequentialList支持“连续访问的数据”
extends AbstractList 实现不可修改的列表
override set(int,E)方法,实现可修改的列表,override add和remove方法支持大小可变的列表
13.AbstractSet
java.util
class
extends AbstractCollection
implements Set
14.SortedSet
java.util
interface
extends Set
迭代器将按照元素升序遍历
所有通用有序set的实现类提供4个标准的构造函数:
      1void无参     2带有Comparator类型参数     3带有Collection类型参数     4带有SortedSet类型参数
方法:
 SortedSet<E>tailSet(E fromElement) 
          返回此 set 的部分视图,其元素大于等于 fromElement
 SortedSet<E>headSet(E toElement) 
          返回此 set 的部分视图,其元素严格小于 toElement

15.HashMap
java.util
class
extends AbstractMap
implements Map,Cloneable,Serializable
基于HashTable的Map实现
允许null值和nullkey
非同步:Map m = Collections.synchronizedMap(new HashMap(...));//防止对map意外的不同步访问
初始容量,加载因子。这两个参数是影响HashMap性能的重要参数。 其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容量,加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度, 负载因子越大表示散列表的装填程度越高,反之愈小 。 对于使用链表法的散列表来说,查找一个元素的平均时间是O(1+a),因此如果负载因子越大,对空间的利用更充分,然而后果是查找效率的降低;如果负载因子太小,那么散列表的数据将过于稀疏,对空间造成严重浪费。系统默认负载因子为0.75
HashMap底层实现还是数组,只是数组的每一项都是一条链, table数组的元素为Entry节点( 其中Entry为HashMap的内部类,它包含了键key、值value、下一个节点next,以及hash值 ),初始容量 initialCapacity就代表了该数组的长度,大于 initialCapacity 的最小的 2 的 n 次方值( 保证HashMap的底层数组长度为2的n次方
HashMap的最大容量值为2^30,容量极限值为 threshold = ( int ) (容量*  加载因子);
如果存放两个一样的key,会用新value覆盖旧的
若HashMap中元素的个数超过极限了,则容量扩大两倍
计算hash值, 然后根据hash值确认在table中存储的位置
hash(int h) {
        h  ^= (h >>> 20) ^ (h >>> 12);
       
return h ^ (h >>> 7) ^ (h >>> 4);
    }
保证table分布均匀( 当length为2的n次方时,h&(length - 1)就相当于对length取模,而且速度比直接取模快得多
static  int indexFor( int h,  int  length) {
       
return h & (length-1 );
    }

16.HashSet
java.util
class
extends AbstractSet
implements Set,Cloneable,Serializable
底层维护了一个HashMap:private transient HashMap<E,Object> map;
允许null元素
不是同步的
Set s = Collections.synchronizedSet(new HashSet(...));//防止不同步访问
17.TreeSet
java.util
class
extends AbstractSet
implements NavigableSet,Cloneable,Serializable
基于TreeMap和NavigableSet实现
add remove contains 提供log(n)时间开销
使用compareTo(或是compare)方法对元素进行比较,与set使用equals不同
不是同步的:
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));//防止不同步访问
 Iterator<E>descendingIterator() 
          返回在此 set 元素上按降序进行迭代的迭代器。
 NavigableSet<E>descendingSet() 
          返回此 set 中所包含元素的逆序视图。
 EpollFirst() 
          获取并移除第一个(最低)元素;如果此 set 为空,则返回 null
 EpollLast() 
          获取并移除最后一个(最高)元素;如果此 set 为空,则返回 null
18.LinkedHashSet
class
extends HashSet
implements Set,Cloneable,Serializable
维护了一个运行了所有条目的双重链表,定义了按照插入顺序进行迭代
迭代所需时间与 set 的 大小  成正比,而与容量无关,但hashSet的迭代时间与容量成正比
不是同步的:
Set s = Collections.synchronizedSet(new LinkedHashSet(...));
19.LinkedHashMap
class
extends HashMap
implements Map
维护了一个运行了所有条目的双重链表,定义了按照插入顺序进行迭代
不是同步的:
Map m = Collections.synchronizedMap(new LinkedHashMap(...));
构造参数:
public  LinkedHashMap(int initialCapacity,float loadFactor, boolean accessOrder)
accessOrder  - 排序模式 - 对于访问顺序,为  true ;对于插入顺序,则为  false
20.HashTable
class
extends Dictionary
implements Map,Cloneable,Serializable
非null, 用作键的对象必须实现  hashCode  方法和  equals  方法
同步的synchronized
21.TreeMap
class
extends AbstractMap
implements NavigableMap,Cloneable,Serializable
基于红黑树(Red-Black tree)的NavigableMap实现
不同步:
SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
22.NavigableMap(v1.6)
interface
extends SortedMap
方法  lowerEntry floorEntry ceilingEntry  和  higherEntry  分别返回与小于、小于等于、大于等于、大于给定键的键关联的  Map.Entry  对象,如果不存在这样的键,则返回  null
类似地,方法 lowerKey floorKey ceilingKey  和  higherKey  只返回关联的键。所有这些方法是为查找条目而不是遍历条目而设计的
可以按照键的升序或降序访问和遍历  NavigableMap
内部类
从接口 java.util.Map 继承的嵌套类/接口
Map.Entry<K,V>
23.NavigableSet(v1.6)
interface
extends SortedSet
方法  lower floor ceiling  和  higher  分别返回小于、小于等于、大于等于、大于给定元素的元素,如果不存在这样的元素,则返回  null 。可以按升序或降序访问和遍历  NavigableSet
descendingSet  方法返回 set 的一个视图,该视图表示的所有关系方法和方向方法都是逆向的。升序操作和视图的性能很可能比降序操作和视图的性能要好
24.ArrayList
class
extends AbstractList
implements List,RandomAccess,Cloneable,Serializable
基于可变数组Object[]实现,
类似与vector,但不同步
 List list = Collections.synchronizedList(new ArrayList(...));
如果使用ArrayList.Synchronized方法返回的实例,那么就不用考虑线程同步的问题,这个实例本身就是线程安全的,实际上ArrayList内部实现了一个保证线程同步的内部类,ArrayList.Synchronized返回的就是这个类的实例,它里面的每个属性都是用了lock关键字来保证线程同步
ArrayList List = new ArrayList(); 
List.Add(1); 
方法一:Int32[] values = (Int32[])List.ToArray(typeof(Int32));
方法二:Int32[] values = new Int32[List.Count]; 
              List.CopyTo(values);
对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率

 voidensureCapacity(int minCapacity) 
          如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。
protected  voidremoveRange(int fromIndex, int toIndex) 
          移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。
 voidtrimToSize() 
          将此 ArrayList 实例的容量调整为列表的当前大小。
25.Vector
class
extends AbstractList
implements List,RandomAccess,Cloneable,Serializable
实现可增长的对象数组Object[]
同步的
26.Stack
class
extends Vector
后进先出(LIFO)的对象堆栈
Deque接口及其实现提供了 LIFO 堆栈操作的更完整和更一致的
Deque<Integer> stack = new ArrayDeque<Integer>();























































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值