Java List <myclass>到TreeMap <long,myclass =“”> </long,> </myclass>

时间:2014-10-16 08:23:06

标签: java list treemap

有没有办法,如何将List<MyClass>转换为TreeMap<Long, MyClass> 合理的效果?我在Google Collections中找到了方法Maps.uniqueIndex(),但它只返回Map

列表可以在转换过程中被销毁,我只需要TreeMap。我使用TreeMap是因为我需要使用long进行快速搜索和索引。

提前致谢

2 个答案:

答案 0 :(得分:2)

没有比迭代更简单的方法。

Map<Long, MyClass> tree = new HashMap<Long, MyClass>();
for (MyClass cl: classList){
   tree.put(cl.getId(), cl);
}

就像Seelenvirtuose提到的那样: 如果您想要搜索性能:HashMap,如果您希望对元素进行排序,请使用TreeMap。 在搜索性能上去了HashMap。

答案 1 :(得分:1)

Java 8 中,以最简单的方式使用Stream API:

Map<Long, MyClass> map = myClassList.stream().collect(Collectors.toMap(MyClass::getId, c -> c));

在关注效率时,您应该使用HashMap代替TreeMap。指定Map的实现如下所示:

Map<Long, MyClass> map = myClassList.stream()
        .collect(HashMap::new, (map, myClass) -> map.put(myClass.getId(), myClass), HashMap::putAll);