集合排序/枚举错误:我的排序列表中的条目太多

时间:2011-12-28 22:43:04

标签: java collections

问题是我从某处获得listOf_sorted_APPFiles中的额外2个元素。

    Map<String, List<APPfile>> APPfilesMapByFileName 
            = new HashMap<String, List<APPfile>>();

       ...

    Collections.sort(fileNames, String.CASE_INSENSITIVE_ORDER);
    logger.debug("Sorted count " + fileNames.size()); // 77

    // There will always be a list. Most of the time it will contains 
    // 1 element, but sometimes it may contains more

    for (String sortedFileName : fileNames) {
        for (APPfile a: APPfilesMapByFileName.get(sortedFileName)) {
               listOf_sorted_APPFiles.add(a);
        }
    }

    logger.debug("listOf_sorted_APPfiles count: " + 
                listOf_sorted_APPfiles.size()); // 79
       ...

我希望listOf_sorted_APPFilesfileNames的计数匹配,但不知何故,我得到额外的2个元素。额外添加的元素来自包含多个元素的列表。

3 个答案:

答案 0 :(得分:0)

显然,您添加了所有元素,包括多个APPfile,因此计数不同,但您的代码结果是预期的。请详细说明您解决的问题

答案 1 :(得分:0)

你有两个嵌套的“for”。因此,如果有时会发生多个具有相同文件名的APPfilesMapByFileName元素,则必须有更多的输出元素。

答案 2 :(得分:0)

只是一个想法,如何让listOf_sorted_APPFiles成为TreeSet?它将保留排序顺序,不会有重复