对于我的项目,我需要具有以下功能的收藏集
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的其他图书馆开放。