我有一个对象列表,一个对象的例子是:
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");
}
答案 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");
}
}