java - 如何输出 map 的反转 [Java]

标签 java dictionary

问题如下:Jane 有一些 friend ,她与一些 friend 关联了一个号码。我必须按照点赞数从最少到最多的顺序输出好友。

我主要好奇的是如何在输出时反转 map 值的顺序。 在我的代码中,我必须通过迭代器提取值(我无法直接使用集合),然后通过在以下位置插入每个连续元素将每个字符串存储到数组列表中:索引 0。结果,这颠倒了我认为有效的顺序。

import java.util.*;
import java.io.*;
import static java.lang.System.*;

public class Friends {
    public static void main(String args[]) throws IOException
    {
        Scanner line = new Scanner(new File("friends.dat"));
        int trials = line.nextInt();
        for(int k = 0 ; k < trials ; k++)
        {
            TreeMap<Integer, String> m = new TreeMap<Integer,String>();
            int subtrials = line.nextInt();

            for(int a = 0; a < subtrials ; a++)
            {
                String name = line.next();
                int likes = line.nextInt();
                m.put(likes,name);
            }

            Iterator iter = m.values().iterator();       //**Code of interest starts here**
            ArrayList<String> list = new ArrayList<String>();

            while(iter.hasNext()) {

                list.add(0, (String)iter.next());
            }

            for(int a = 0 ; a < list.size() ; a++)
            {
                if(a == list.size() - 1)
                    out.print(list.get(a));
                else
                    out.print(list.get(a) + ", ");
            }
            out.println();
        }
    }
}

最佳答案

您可以使用自定义 comparator反转映射中条目的顺序(请注意,这仅适用于 TreeMap - 其他映射实现不关心顺序)。

public static void main(String[] args) {
    TreeMap<Integer, String> map = new TreeMap<>((key1, key2) -> Integer.compare(key2, key1)); //Custom comparator.
    map.put(1, "Bob");
    map.put(3, "Baz");
    map.put(2, "Foo");

    System.out.println(map);
}

关于java - 如何输出 map 的反转 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40988291/

相关文章:

python - 测试字典中是否存在某个键,并在相同的 if 中进行另一个测试

java - 如何修改IDEA/Android Studio设置中 “try-catch”模板的异常变量默认名称?

java - NullPointerException - 读取非空文件返回 Null

java - 使用getRuntime()。exec()执行脚本时执行错误处理的最佳方法

c# - 从 .NET 词典中删除与谓词匹配的多个项目的最佳方法?

java - 如何将包含List的Java Map转换为Scala Map

c++ "error: no matching function for call to"在集合中计数时

ios - swift - 保存 plist 字典而不覆盖键

java - Android Studio 表示未安装 JDK 7,而 JDK 8 甚至已安装

java - 如何启动获取文件锁并相互等待的并发线程