检查arraylist中的重复条目

时间:2017-05-19 10:14:59

标签: java arraylist contains

DogCat类继承自Animal类,如果我想添加ArrayList,我会使用代码

pets.add(new Dog(name))

如何查看姓名是否被多次使用?

我正在寻找类似:pets.contain(...)

的内容

4 个答案:

答案 0 :(得分:1)

实际上有一个contains method on List。它使用equals方法来检查是否相等,因此如果您的DogCat类以相同名称表示相等的方式实现equals,则只需使用contains

如果由于某种原因你不想这样做(因为你需要相等来表示别的东西),你可以迭代列表并找到一个具有相同名称的条目。或者,使用流,如下所示:pets.stream().filter(pet -> pet.getName().equals(newName)).findAny().isPresent()

答案 1 :(得分:0)

如果您使用的是Java8,则可以使用以下内容:

pets.stream().map(animal -> animal.getName()).contains(name);

将返回布尔值,无论name是否已在List中。

另一种方法是使用for循环:

boolean isNamePresent = false;
for (Animal pet: pets) {
    if(pet.getname().equals(name)) {
        isNamePresent = true;
    }
}

答案 2 :(得分:0)

使用本机功能无法实现此目的。

您可以尝试以下方法:

int number = 0;
for (int i=0; i<pets.size(); i++){ 
    if pets.get(i).getname().equalsIgnoreCase("nameYouWant") number++;
}

答案 3 :(得分:0)

你的问题很模糊。

如果您想从列表中查找多次使用的名称,您可以执行类似

的操作
IDictionary<string,object>

将为您提供包含多次出现的pets.stream() .collect(Collectors.groupingBy(Animall::getName(), Collectors.counting())) .entrySet().stream() .filter(e->e.getValue() > 1) .map(e->e.getKey()) .collect(Collectors.toList())); 个名称

如果您只是想在添加之前检查List<String>中是否存在名称,我认为您应该使用pets而不是Map<String, Animal>

相关问题