2014.2.22 Java 容器

完整的容器分类


填充容器:

* 使用Generator填充

public class CollectionData<T> extends ArrayList<T>{
	public CollectionData(Generator<T> gen, int q){
		for(int i=0; i<q; i++){
			add(gen.next());
		}
	}
}
public static <T> CollectionData<T> list(Generator<T> gen, int q){
	return new CollectionData<T>(gen. q);
}
* 使用泛型方法减少在创建MapData类对象时必须的类型检查数量(利用自动类型推断)

public class MapData<K, V>{
	public MapData(){
		//...;
	}
	public MapData(K key, V value){
		//...;
	}
	public static <K, V> Map<K, V> map(){
		return MapData<K, V>();
	}
	public static <K, V> MapData<K, V> map(K key, V value){
		return new MapData<K, V>(key, value);
	}
}

MapData<String, Integer> map=MapData.map();
MapData<String, Integer> map=MapData.map(String, Interger);
* 匿名内部类实现Iterator;

* 享元:使得对象的一部分可以被具体化,可以在更加高效的外部表中查找对象的一部分或整体;

利用索引,减少直接对大量数据的直接调用;

Collenction的功能方法,Set,List:

* Object [] toArray();

* Arrays.asList()会生成一个List,它基于一个固定大小的数组,仅支持哪些不会改变数组大小的操作;任何会引起对底层数据结构的尺寸进行修改的方法都会产生一个UnsupportedOperationException异常;应该把Arrays.asList()的结果作为构造器的参数传递给Collection使用;

* Arrays.asList()与unmodifiableList()区别;

Set和存储顺序:

* HashSet,无序;

* LinkedHashSet,以插入顺序存储,需要equals()和hashCode();

* TreeSet,以降/升序存储,实现了Comparable接口;

* SortedSet,Comparator comparator();TreeSet是该接口的唯一实现;

队列:

LinkedList,PriorityQueue;

* 优先级队列;双向队列;

Map:

HashMap,TreeMap(红-黑树实现,有submap(),可以返回某个子树),LinkedHashMap,WeadHashMap,ConcurrentHashMap,IdentityHashMap;效率,键值对的保存,呈现次序,对象的保存周期,映射表,判定“键”等价的策略方面不同;

* 性能;散列吗,相对唯一,加快搜索,可以使用质数也可以2的整数次,克服求余的复杂性;

* WeakHashMap允许释放映射所指向的对象;如果映射之外没有引用指向某个“键”,则此“键”可以被垃圾回收器回收;

* ConcurrentHashMap线程安全的Map;

* IdentityHashMap用==代替equals(),对键进行比较;

* 如果键被用于散列Map,必须具有恰当的hashCode()方法;被用于TreeMap,必须实现Comparable;


* keySet()返回由Map的键组成的Set();keySet(),valueSet()和entrySet()产生的Set会与原Map相关联,原Map的改动会反映的keySet()上;

* LinkedHashMap可以采用基于访问的LRU(最近最少使用)算法;

* 保持键的排序状态,然后使用Collections.binarySearch()进行查询;

* HashMap的性能,容量,负载因子默认0.75;再散列;

* 首先按照实际类型排序的CompareTo();

* ArrayList底层由数组支持,随机存取速度快;LinkedList由双向链表实现,经常的插入删除;

* HashSet最常用,查询速度最快;LinkedHashSet保持元素插入顺序;TreeSet基于TreeMap,总是处于排序状态;

* 性能测试,需要认真学习;

* CopyOnWriteArrayList是List一个专用于并发编程的实现;

* 微基准的测试

java.lang.Collections的方法:P512

unmodifiable...

Sychronized...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值