搜索特定对象

时间:2017-04-20 14:32:39

标签: java

我有一个对象列表,一个对象的例子是:

255, "Ben Nevis", "Highland", 1344.5, 56.796849, -5.003525

列表中有很多对象,我希望它打印出所有具有单词" Ben"在其中,但我不确定如何做到这一点,因为我在对象中的第二个字段可以有多个名称。

List<Mountains> list = Mountains.readMountains();
Scanner input = new Scanner(System.in);

System.out.println("Please enter a Mountain name: ");
String search = "Ben"
if (list.contains(search)){
    System.out.println("true");
}
else{
    System.out.println("no");
}

5 个答案:

答案 0 :(得分:1)

您必须迭代列表中的每个条目,然后检查Name属性(字符串)是否包含您的搜索词:

for(Mountains m:list){
  if(m.getName().contains(search)){
    System.out.println(m);
  }
}

这假设可以使用getName()访问Mountain的名称。

在您当前的代码中,如果contains个对象的列表包含Mountains对象,其值为String,那么您将检查(使用"Ben")这个对象永远不会是真的

答案 1 :(得分:1)

list.stream().filter(m->m.getName().contains(search)).forEach(System.out::println);

如果你想要更有趣的东西,你可以试试这个:)

上面的代码将打印包含&#34;搜索&#34;的所有匹配项。 如果你想检查是否找到它,你可以试试这个:

list.stream().filter(m->m.getName().contains(search)).findAny().isPresent()

来自 Java 8 1-liners 解决了您的问题。

答案 2 :(得分:0)

如果我理解正确,你想在对象列表中检查具有特定字符序列的字符串吗?

我会做这样的事情:

    String keyword = "Ben";
    Object[] objects = new Object[] { 255, "Ben Nevis", "Highland", 1344.5, 56.796849, -5.003525};

    for(Object obj : objects)
        if(obj instanceof String)
            if(((String) obj).contains(keyword)) {// Response here}

答案 3 :(得分:0)

{{1}}

答案 4 :(得分:0)

因此,如果我是正确的,您有一个包含您已编写的所有数据的类作为示例,并将该信息存储在列表中。

因此,您可以使用for循环遍历列表,然后将您要查找的内容与列表中的信息进行比较。

 List<Mountains> list = Mountains.readMountains();
 Scanner input = new Scanner(System.in);

 System.out.println("Please enter a Mountain name: ");
 String search = "Ben"

 for(int i=0;i<list.size()-1;i++){

  if (list.get(i).mountainName.equals(search)){

    System.out.println("Using list.get(i) you print all the data that has 
                       the same name as your search");
    }

  }