我使用TreeBidiMap
来自Apache的集合库.我想对这些值进行排序doubles
.
我的方法是Collection
使用以下方法检索一个值:
Collection coll = themap.values();
这自然很好.
主要问题:我现在想知道如何转换/转换(不确定哪个是正确的)coll
到一个List
可以排序?
然后我打算遍历排序的List
对象,该对象应按顺序从TreeBidiMap
(themap
)中使用themap.getKey(iterator.next())
迭代器将在列表上的位置获取相应的键doubles
.
List list = new ArrayList(coll); Collections.sort(list);
正如Erel Segal Halevi在下面所说,如果coll已经是一个列表,你可以跳过第一步.但这取决于TreeBidiMap的内部.
List list; if (coll instanceof List) list = (List)coll; else list = new ArrayList(coll);
这样的东西应该工作,调用带有Collection 的ArrayList构造函数:
List theList = new ArrayList(coll);
我认为Paul Tomblin的答案可能是浪费,以防coll已经是一个列表,因为它将创建一个新列表并复制所有元素.如果coll包含许多元素,这可能需要很长时间.
我的建议是:
List list; if (coll instanceof List) list = (List)coll; else list = new ArrayList(coll); Collections.sort(list);
我相信你可以这样写:
coll.stream().collect(Collectors.toList())
Collections.sort( new ArrayList( coll ) );