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.0 2.主要集合类: 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

上一篇:P5338 [TJOI2019]甲苯先生的滚榜 FHQ_TREAP


下一篇:《Java核心技术》第八章读书笔记(泛型)