当前位置:  开发笔记 > 编程语言 > 正文

如何将集合转换为列表?

如何解决《如何将集合转换为列表?》经验,为你挑选了5个好方法。

我使用TreeBidiMap来自Apache的集合库.我想对这些值进行排序doubles.

我的方法是Collection使用以下方法检索一个值:

Collection coll = themap.values();

这自然很好.

主要问题:我现在想知道如何转换/转换(不确定哪个是正确的)coll到一个List可以排序?

然后我打算遍历排序的List对象,该对象应按顺序从TreeBidiMap(themap)中使用themap.getKey(iterator.next())迭代器将在列表上的位置获取相应的键doubles.



1> Paul Tomblin..:
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);


请注意,这两种方法有不同的副作用:将集合转换为列表,然后排序也将对原始集合进行排序; 创建副本不会.

2> Jack Leow..:

这样的东西应该工作,调用带有Collection 的ArrayList构造函数:

List theList = new ArrayList(coll);



3> Erel Segal-H..:

我认为Paul Tomblin的答案可能是浪费,以防coll已经是一个列表,因为它将创建一个新列表并复制所有元素.如果coll包含许多元素,这可能需要很长时间.

我的建议是:

List list;
if (coll instanceof List)
  list = (List)coll;
else
  list = new ArrayList(coll);
Collections.sort(list);



4> Eyal Ofri..:

我相信你可以这样写:

coll.stream().collect(Collectors.toList())



5> OscarRyz..:
Collections.sort( new ArrayList( coll ) );

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有