Java判断arraylist是否包含字符串

标签 java arraylist

我有一个名为 Paragens 的类,如下所示:

public class Paragens {
    static int contadorParagens = 1;

    String nomeParagem;
    int id;

    public Paragens(String nomeParagem) {
        this.nomeParagem = nomeParagem;
        this.id = contadorParagens++;
    }

    // getters and setters for nomeParagem
}

每个 Paragens 对象都有一个名称和一个 Id。

这个类有一个 main 方法,我可以在其中创建几个 Paragens 对象并将它们存储在 ArrayList 中,如下所示:

public static void main(String[] args) {
    ArrayList<Paragens> paragens = new ArrayList<Paragens>();
    paragens.add(new Paragens("name1");
    // ... add more paragens
}

这工作正常。如果我插入一堆paragens并打印它们,我可以看到一切都好。

我想做的是要求用户输入一个参数名称,然后我想查看该参数是否已经在 ArrayList 中。

String name;
System.out.println("Insert paragem name: ");
pickName = sc.nextLine();
System.out.println(paragens.contains(pickName));

我做错了什么?

最佳答案

contains检查列表中是否包含您递给它的实际内容。在本例中,您将传入 String 名称,但将其与 Paragem 实例进行比较。 contains 无法神奇地猜测它应该查看 Paragem 实例上的给定属性来比较字符串。

您可以轻松地循环列表来亲自查找:

boolean found = false;
for (Paragem p : paragems) {
    if (p.nomeParagem.equals(pickName)) { // Or use an accessor function for `nomeParagem` if appropriate
        found = true;
        break;
    }
}

...或作为函数:

boolean containsParagemWithName(ArrayList<Paragem> paragems, String pickName) {
    for (Paragem p : paragems) {
        if (p.nomeParagem.equals(pickName)) {
            return true;
        }
    }
    return false;
}

关于Java判断arraylist是否包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8284936/

相关文章:

java - 属于父类(super class)的不同类的对象的ArrayList?

C#:检查 ArrayList 元素是否具有特定类型

java - 如何在SQL语句中使用Arraylist的每个元素作为列值(迭代Arraylist的每个元素)?

java - 如何在 Windows 7 上创建可供所有用户使用的 java webstart 快捷方式?

java - SomeClass<T extends OtherClass> 和 SomeClass<T super OtherClass> 之间的区别

Java Web UI - 从哪里开始构建现代网站?

java - 如何显示java arraylist的不同步性?

java - 引用类对列表进行排序,而无需在 java 中实现

java - 当 JasperViewer 出现并且我关闭它时,主框架/父框架也关闭了

java - Ant 在 Java 工作区中构建 ArrayIndexOutOfBoundsException