出于某种原因,我在这一点上画了一个空白。我有一个包含CD的ArrayList(其中一些名称相同),我想打印一个字符串,告诉我每张CD有多少。例如,一个字符串表示“你有:(1)AlbumOne,(2)AlbumTwo,(1)AlbumThree”等。这些CD没有排序。我怎么能这样做?
答案 0 :(得分:2)
一种方法是循环遍历数组,并使用将对象用作键并将值用作计数的映射。所以
Map<YourObject, Integer> counter ...
当您循环访问数组时,在计数器上为数组中的当前对象执行get
。如果为null,则将地图中该存储桶的值初始化为1.如果有值,则将其递增。然后你可以遍历地图以获得你的读数。
请注意,如果您使用Hashmap
,则您的对象必须正确实施hashcode
和equals
方法。您不必使用您的对象,如果它有键或其他区别字段,地图中的键可以是...
答案 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链接(教程)并阅读/了解地图。