java - 在 Java 中打印列表中的重复项

标签 java collections

非常基本的问题:

我有一些项目被添加到某个集合中(我还不介意哪个),并且我想要一种按组打印项目的方法,例如

public enum Animal{
COW("cow"), PIG("pig"), SHEEP("sheep");

private String itemName;

public String toString() {
    return itemName;
}
}

public class Farm {

private ArrayList<Animal> animals= new ArrayList<>();

animals.add{Animal.COW} 
animals.add{Animal.COW}
animals.add{Animal.PIG}
animals.add{Animal.COW}
animals.add{Animal.SHEEP}
animals.add{Animal.PIG}

public String animalList {

...
}

animalList 输出:3 x 牛、2 x pig 、1 x 羊

最好的方法是什么? map 会比列表(即从每种动物到该动物的数量的 map )更好吗?但随后可能很难向 Collection 中添加新动物。

最佳答案

是的,HashMap 是更好的选择,但请在此处使用您的Animal 作为key

    HashMap<Animal, Integer> animalHashMap=new HashMap<Animal, Integer>();
    animalHashMap.put(Animal.COW, 3);
    animalHashMap.put(Animal.SHEEP, 10);
    animalHashMap.put(Animal.PIG, 2);

关于java - 在 Java 中打印列表中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26404999/

相关文章:

java - 访客设计模式意图: misleading or I am missing something?

java - 如何在jsp中显示位于服务器根目录下的图像

java - 如何与 Sprite 一起旋转 vector ?

java - 使用 Scanner 类扫描 int 时出错

java - glassfish部署错误

Java - 如何从时间戳集合中删除重复项?

vector - 检查 Vec 是否包含来自另一个 Vec 的所有元素

java - 从 HashMultiMap 获取有序数组

c# - 在 Salesforce 中映射线索的自定义字段

java - 对集合进行单元测试的最佳方法?