java - 将对应的值按降序排列

标签 java

我现在有两组列,但我不确定如何对其进行编程以及使用哪组类。两者都在单独的数组中。一个用于字母,另一个用于数字。

 a  12
 b  9
 c  156

所以a对应于12,b对应于9等等。该列表实际上是文本文件中字母的频率,所以我有26个。 两者不在同一个数组中。因为我对它们都有单独的数组。我想尝试并安排 并使它们呈下降的方式。 这样输出将是:

 c   156
 a   12
 b   9    

我仍然不确定 ArrayList 或 HashMap 或 Tree Map 的各种功能。那么有什么帮助吗?

最佳答案

import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class Test {

    public static void main(String[] args) {

        HashMap<String,Integer> map = new HashMap<String,Integer>();
        ValueComparator bvc =  new ValueComparator(map);
        TreeMap<String,Integer> sorted_map = new TreeMap(bvc);

        map.put("A",5);
        map.put("B",60);
        map.put("C",65);
        map.put("D",3);

        System.out.println("unsorted map");
        for (String key : map.keySet()) {
            System.out.println("key/value: " + key + "/"+map.get(key));
        }

        sorted_map.putAll(map);

        System.out.println("results");
        for (String key : sorted_map.keySet()) {
            System.out.println("key/value: " + key + "/"+sorted_map.get(key));
        }
    }

}

class ValueComparator implements Comparator {

  Map base;
  public ValueComparator(Map base) {
      this.base = base;
  }

  public int compare(Object a, Object b) {

    if((Integer)base.get(a) < (Integer)base.get(b)) {
      return 1;
    } else if((Integer)base.get(a) == (Integer)base.get(b)) {
      return 0;
    } else {
      return -1;
    }
  }
}

关于java - 将对应的值按降序排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859884/

相关文章:

java - Comparable接口(interface)的泛化

java - 查找二维数组中的节点邻居

Java - 阅读另一个线程正在写入 stdout/stderr 的内容 - 如何?

java - IDEA Ultimate 2019.3 上的 org.springframework.boot.web.embedded.tomcat.ConnectorStartFailedException

java - 如何在 Java 中定义基于两个变量进行比较的比较器

java - 如何为 Android 修复 "Error inflating class GeckoEngineView"

java - Apache Spark maven tomcat :run

java - 使用单例类和使用静态方法的类有什么区别?

java - 在 java 中创建一个本地押韵字典

java - 如果同时有很多请求,多线程是否会提高性能?