当前位置: 首页 > 知识库问答 >
问题:

泛型数据结构上的collections.sort()不工作

戚弘和
2023-03-14

我被要求创建一个toArray方法,该方法应该分别返回一个迭代器或数组,其中的元素按“add”计数(HashMap中的值)升序排序。

所以我似乎必须重写或创建sort方法。有人能帮我指出正确的方向吗?

public class OccurenceSet<T> implements Set<T>{

     private HashMap<T,Integer> data;

     public OccurenceSet(){
         this.data = new HashMap<T,Integer>();
     }

     @Override
     public Object[] toArray() {

         Set<Map.Entry<T,Integer>> dataSet = data.entrySet();
         ArrayList<Map.Entry<T,Integer>> dataList = new ArrayList<>(dataSet);
         Collections.sort(dataSet, new Comparator<Map.Entry<T,Integer>>() {
              @Override
              public int compare(Map.Entry<T,Integer> o1, Map.Entry<T, Integer> o2) {
                  return o1.getValue().compareTo(o2.getValue());
              }
          });

      return null;
    }
}

共有1个答案

邵劲
2023-03-14

HashMap并不意味着保持条目的排序顺序,但如果必须根据键或值对HashMap进行排序,可以在Java中这样做。

  1. 通过调用map的entrySet()方法获取所有条目
  2. 创建自定义比较器以根据值对条目进行排序。
  3. 将条目集转换为列表。
  4. 通过传递值比较器使用collections.sort()方法对条目列表排序
  5. 通过按排序顺序添加条目来创建LinkedHashMap。
 类似资料:
  • 问题内容: 我有一个专栏 组 。 群组 具有存储在group_types中的不同类型(买方,卖方,裁判)。只有当该组是买方类型时,它才具有另一种(更专门)的类型,例如电气和机械类型。 我对如何将其存储在数据库中感到有些困惑。 有人可以建议我一个数据库结构吗? 谢谢 问题答案: 将您的存储为层次结构表(带有或模型): : 将选择中的所有买家。 : 将选择任何数据库中的所有买家。 如果您不需要层次结构

  • 问题内容: 如果我有一个像这样的抽象类: 还有一些从Item派生的类是这样的: 我不明白为什么我不能使用泛型调用构造函数: 我知道可以有一个没有构造函数的类型,但是这种情况是不可能的,因为Pencil具有没有参数的构造函数,而Item是抽象的。但是我从eclipse中得到了这个错误: 无法实例化 我不明白为什么的 T类型 ,以及如何避免这种情况? 问题答案: 无法使用Java类型系统来强制类层次结

  • 这是我拿到的一组php数据,我突然看不明白这是什么数据了?我去遍历不行,用arr[0]可以拿到objectclass的数组,但是这数组为什么是(6)?

  • 本文向大家介绍数据类型和数据结构之间的区别,包括了数据类型和数据结构之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,编程完全围绕数据展开。数据是实现所有业务逻辑的基础,而数据流则是构成应用程序或项目功能的数据。因此,组织和存储数据以使其最优化使用并使用良好的数据模型进行有效编程就变得非常重要。 通常,数据类型和数据结构似乎都与处理数据的性质和组织相同,但是其中两个描述了数据的类型和性

  • 据我解释,可以用任何表示,其中是或的超级类。同样的逻辑适用于也是。那么是?

  • 我试图约束泛型函数的返回类型。(为了简化示例,请忽略函数的实际“有用性”)。 但是返回语句会导致打字错误- -这让我很困惑。在我的理解中,