java高性能编程 eclipse collections 1
ec:
https://www.eclipse.org/collections/
Eclipse Collections,是一个高性能的集合。
提供了丰富的可变和不可变的集合类,但它底层是经过优化的。
今天我们来看看怎么用这些集合,来加速我们的开发速度和程序性能。
1引入依赖包:
org.eclipse.collections
eclipse-collections-api
10.4.0
org.eclipse.collectionseclipse-collections10.4.02.主要集合类:ListIterable 有序的list集合,允许保存重复值。其包括:MutableList, FixedSizeList and ImmutableList。主要实现类:FastList。
SetIterable 没有重复值的集合,其可以是有序或无序的。其主要子接口:SortedSetIterable and UnsortedSetIterable.
无序的主要实现类:UnifiedSet
MapIterable 键值对。其包括:MutableMap, FixedSizeMap and ImmutableMap
主要实现类:
UnifiedMap and MutableSortedMap.
BiMap 双向键值对。扩展自接口MapIterable
Bag 无序的list集合,允许重复值。其主要子接口MutableBag ,FixedSizeBag. 常用实现类:HashBag
StackIterable 堆栈 主要子接口MutableStack ,ImmutableStack
MultiMap 键值对,允许一个键对应多个值。
下面直接来看看怎么样实例化。
先看看FastList:
MutableList list = FastList.newListWith(
"Porsche", "Volkswagen", "Toyota", "Mercedes", "Toyota");
再看看:
Set comparison = UnifiedSet.newSetWith(
"Porsche", "Volkswagen", "Toyota", "Mercedes");
MutableBag bag = HashBag.newBagWith(
"Porsche", "Volkswagen", "Toyota", "Porsche", "Mercedes");
UnifiedMap有点不一样:
Pair<Integer, String> pair1 = Tuples.pair(1, "One");
Pair<Integer, String> pair2 = Tuples.pair(2, "Two");
Pair<Integer, String> pair3 = Tuples.pair(3, "Three");
UnifiedMap<Integer, String> map = new UnifiedMap<>(pair1, pair2, pair3);
当然,我们也可以用java传统的实例化方式:
UnifiedMap<Integer, String> map = new UnifiedMap<>();
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
我们注意immutable,是不可变的。所以,我们用这些类时,是没有add或remove方法的。
值保存好后,现在我们要从集合中取值,也简单:
list.get(0);
map.get(0);
map.getFirst();//得到第一个
map.getLast();//得到最后一个
好,我们现在来实现一个这样的需求:
有map来保存,pair,这个pair,键是价格,值是对象:order,包括下单信息:下单时间,下单类型,下单币种,下单价格。
而且,这个pair可保存在一个有序的List中,以维护下单的优先级。
我们看看选择什么类型的map