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

来源:https://www.icode9.com/content-1-750351.html

(0)

相关推荐

  • java基础第十二篇之集合、增强for循环、迭代器和泛型

    Collection接口中的常用方法: * 所有的子类子接口都是具有的 * 集合的方法:增删改查 * * public boolean add(E e);//添加元素 返回值表示是否添加成功 * pu ...

  • 高性能编程:三级缓存(LLC)访问优化

    AMD 服务器,多线程应用绑核,选取不同的 CPU 核,性能差距可达50%.最近有幸因项目拿到一台 AMD EPYC 系列测试服务器,发现了一些奇怪的现象.这台测试服务器拥有双路 AMD EPYC   ...

  • Java并发编程之内置锁(synchronized)

    简介 synchronized在JDK5.0的早期版本中是重量级锁,效率很低,但从JDK6.0开始,JDK在关键字synchronized上做了大量的优化,如偏向锁.轻量级锁等,使它的效率有了很大的提 ...

  • Java并发编程之线程的创建

    简介 线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在.一个进程至少有一个线程,进程中的多个线程共享进程的资源. Java中创建线程的方式有多种如继承Thread ...

  • Java并发编程实战(5)- 线程生命周期

    在这篇文章中,我们来聊一下线程的生命周期. 目录 概述 操作系统中的线程生命周期 Java中的线程生命周期 Java线程状态转换 运行状态和阻塞状态之间的转换 运行状态和无时限等待状态的切换 运行状态 ...

  • java 面向对象编程

    什么是面向对象 回顾方法的定义与调用 方法的定义 import java.io.IOException; //Demo01 类 public class Demo01 { //main方法 publi ...

  • 我把Java基础编程及思维导图整理的超级详细,小白都能看懂

    Java基础编程及其思维导图 目录: Java学习导图 一.Java基本语法 1.关键字与标识符 2.变量分类 3.运算符 4.流程控制 二.数组 1.数组概述 2.一维数组 3.二维数组 4.数组常 ...

  • Java并发编程实战(4)- 死锁

    概述 在上一篇文章中,我们讨论了如何使用一个互斥锁去保护多个资源,以银行账户转账为例,当时给出的解决方法是基于Class对象创建互斥锁. 这样虽然解决了同步的问题,但是能在现实中使用吗?答案是不可以, ...

  • 《Java并发编程:设计原则与模式(第二版)》.pdf

    回复"面试"获取全套面试资料 并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单位时间内不一定同时在执行. 在单CPU的时代多个任务都 ...

  • Java基础之:Collections工具类

    Java基础之:Collections工具类 Collections类简单介绍 Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了一系列 ...