java - 如何形成从 HashMap 中提取的值的有序列表?

标签 java iterator hashmap

我的问题实际上比问题所暗示的更微妙,但希望标题保持简短。

我有一个HashMap<String, File>File对象作为值。 key 是 String name属于 File 的字段实例。我需要迭代 HashMap 中的值并将它们作为单个 String 返回。

这是我目前拥有的:

private String getFiles()
{   
    Collection<File> fileCollection = files.values();
    StringBuilder allFilesString = new StringBuilder();

    for(File file : fileCollection) {
        allFilesString.append(file.toString());
    }
    return allFilesString.toString();
}

这可以完成工作,但理想情况下我想要单独的 File要附加到 StringBuilder 的值按int fileID的顺序,这是 File 的一个字段类。

希望我已经说得足够清楚了。

最佳答案

这样的事情应该有效:

List<File> fileCollection = new ArrayList<File>(files.values());

Collections.sort(fileCollection, 
                 new Comparator<File>() 
                 {
                     public int compare(File fileA, File fileB) 
                     {
                         final int retVal;

                         if(fileA.fileID > fileB.fileID)
                         {
                             retVal = 1;
                         }
                         else if(fileA.fileID < fileB.fileID)
                         {
                             retVal = -1;
                         }
                         else
                         {
                             retVal = 0;
                         }

                         return (retVal);                         
                     }
                 });

关于java - 如何形成从 HashMap 中提取的值的有序列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603766/

相关文章:

java - 哪种 MySQL 类型最能存储时间点信息 - 日期时间或时间戳

java - 为什么我的算法不检查链表的最后一个元素?

java - 使用 mvvm 模式更改 fragment

c++ - C++无法取消引用结束列表迭代器

c++ - 数组中字符串的迭代器

java - 以对象列表为键的 HashMap

java - 使用 float 作为 map 的键

java - Android 声明一个变量

c# - C# Take(k) 扩展方法会依次执行一个完整的前一个GroupBy吗?

java - 如何将句子输入到HashMap中