【问题标题】:How do i convert a set to a sorted array using java [duplicate]如何使用java将集合转换为排序数组[重复]
【发布时间】:2013-09-04 18:31:30
【问题描述】:

HashMultimap 返回给定键的一组值。如何将此 java 集转换为排序数组?除了使用 java.util.collections.sort(....) 将其转换为排序列表然后使用 to 数组之外,还有其他方法吗?

【问题讨论】:

  • 应该和这个问题一样:stackoverflow.com/questions/740299/…
  • 为什么不使用排序实现?
  • 如果您不需要专门的数组,而只想对 Set 的元素进行排序,请考虑使用 TreeSet 而不是 HashSet
  • 不,我需要它作为一个数组。如果我在两者之间使用列表,则演员表太多
  • 演员阵容过多?你用这个数组做什么?

标签: java sorting collections


【解决方案1】:

两行:

Object[] array = set.toArray();
Arrays.sort(array);

【讨论】:

    【解决方案2】:

    TreeSet 实现了 SortedSet。使用从多重映射中获得的值构造一个新的 TreeSet。

    HashMultimap<K,V> hm = new HashMultimap<>();
    
    // (...) alter hm
    
    TreeSet<V> ts = new TreeSet<>(hm.values());
    //or
    TreeSet<V> ts = new TreeSet<>(hm.get("key"));
    
    V[] ordered = (V[]) ts.toArray();
    

    我不确切知道有序插入的效率如何,所以我不知道这是否是一个好的解决方案。在 Java 文档中查找详细比较。

    供参考: http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html

    【讨论】:

    • 您发布的链接描述了效率:This implementation provides guaranteed log(n) time cost for the basic operations (add, remove and contains).
    • 如果我正在创建一个新的树集,如果我的 V 是一个大数据结构,那么它会占用大量内存......以及如何将树集转换为数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 2013-12-02
    相关资源
    最近更新 更多