zoukankan      html  css  js  c++  java
  • java高性能编程 eclipse collections 1

    ec:
    https://www.eclipse.org/collections/
    Eclipse Collections,是一个高性能的集合。
    提供了丰富的可变和不可变的集合类,但它底层是经过优化的。
    今天我们来看看怎么用这些集合,来加速我们的开发速度和程序性能。
    1引入依赖包:

    org.eclipse.collections eclipse-collections-api 10.4.0 org.eclipse.collections eclipse-collections 10.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

  • 相关阅读:
    CCF-201803-3-URL映射(模拟)
    Problem UVA11134-Fabled Rooks(贪心)
    UVA1152-4 Values whose Sum is 0(分块)
    UVA1605-Building for UN(思维)
    基于XMPP的IOS聊天客户端程序(IOS端一)
    基于XMPP的IOS聊天客户端程序(XMPP服务器架构)
    正则表达式在iOS中的运用
    NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
    自动无限循环UIScrollView原理
    NSTimeZone
  • 原文地址:https://www.cnblogs.com/gyc567/p/13917491.html
Copyright © 2011-2022 走看看