java中的ArrayList,只做一次动作

时间:2011-10-03 02:20:43

标签: java arraylist

出于某种原因,我在这一点上画了一个空白。我有一个包含CD的ArrayList(其中一些名称相同),我想打印一个字符串,告诉我每张CD有多少。例如,一个字符串表示“你有:(1)AlbumOne,(2)AlbumTwo,(1)AlbumThree”等。这些CD没有排序。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

一种方法是循环遍历数组,并使用将对象用作键并将值用作计数的映射。所以

Map<YourObject, Integer> counter ...

当您循环访问数组时,在计数器上为数组中的当前对象执行get。如果为null,则将地图中该存储桶的值初始化为1.如果有值,则将其递增。然后你可以遍历地图以获得你的读数。

请注意,如果您使用Hashmap,则您的对象必须正确实施hashcodeequals方法。您不必使用您的对象,如果它有键或其他区别字段,地图中的键可以是...

答案 1 :(得分:1)

//aggregate details
Map<String, Integer> albumCounts = new HashMap<String, Integer>();
for (String album : albums) {
    Integer count = albumCounts.get(album); 
    if (count == null) {
        count = 0;
    }
    albumCounts.put(album, count + 1);
}

//print stats
System.out.println("You have:");
for (String album : albums) {
   System.out.println("(" + albumCounts.get(album) + ") " + album);
}

答案 2 :(得分:0)

不要对Map感到困惑。使用Map 适合解决此类问题(如您所发布的那样)所以请访问this链接(教程)并阅读/了解地图。