是否有一个基于哈希的(快速检索),有序,索引化并允许插入的集合?

时间:2019-07-12 12:58:15

标签: collections java-8

对于我的项目,我需要具有以下功能的收藏集

a。基于哈希:快速检索,因为我可能必须在多个级别上爬过数千个节点

b。有序的:所有节点都必须维护插入顺序。这是必须的

c。编制索引:我将需要频繁访问集合的第一个和最后一个元素而无需进行迭代

d。快速插入:我可能会非常频繁地在两者之间插入一个节点

Java Collections最适合的是LinkedHashSet,但是唯一的缺点是它没有被索引。所以我不能做类似myCollection.last()

的事情

我能做的最好的是

LinkedHashSet<Car> carList = new LinkedHashSet<Car>();
//Implemented hashCode() and equals()       
carList.add(new Car(new Engine("1234","V2"),"Indica","Tata"));
carList.add(new Car(new Engine("1235","V6"),"RS7","Audi"));
carList.add(new Car(new Engine("1236","V6"),"GT-R","Nissan"));
carList.add(new Car(new Engine("1237","V2"),"Indica","Tata"));
carList.add(new Car(new Engine("1237","V2"),"Indica","Tata"));
carList.add(new Car(new Engine("1238","V2"),"Indica","Tata"));
carList.add(new Car(new Engine("1239","V6"),"RS7","Audi"));
carList.add(new Car(new Engine("1240","V6"),"GT-R","Nissan"));

Car c = (Car)carList.toArray()[carList.size()-1];
System.out.println("Last : "+c); //Find last

但是没有插入LinkedHashSet的好方法,这是我不得不拒绝LinkedHashSet的地方。 我只有对满足上述所有要求且性能良好并允许使用功能编程和Stream API的其他图书馆开放。

0 个答案:

没有答案