没有一种方法可以检测列表中的值。首先,您必须将数组转换为列表。还有一个方法:
1。使用“包含”方法
List 有一个名为contains() 的方法,它返回布尔值。 True - 如果值/对象在列表中,false - 如果值不在列表中。
示例:
String[] array = {"apple", "orange"};
List<String> list = Arrays.asList(array);
String value = "apple";
if (list.contains(value)) {
System.out.println("Value is in the list");
} else {
System.out.println("Value is not in the list");
}
这是检测数组是否包含值/对象的最简单方法。此外,您可以使用.indexOf() 方法代替使用.contains(),如果数组中不存在值,则该方法返回-1。这也是其他编程语言中最古老的方式:if (list.indexOf(value) != -1)。
这些方法的问题可能是输入的值和数组中的值具有不同的字符大小写(大写/小写)。要解决这个问题,您应该迭代数组并使用相同的字符大小写。
2。迭代数组
当字符串值大小写不匹配时,迭代数组值可以解决问题。
示例:
String[] array = {"Apple", "Orange"};
String value = "apple";
boolean isInArray = false;
for (String item : array) {
isInArray = item.toLowerCase().equals(value.toLowerCase());
if (isInArray) {
System.out.println("Value is in the list");
break; // exiting array iteration when value was found
}
}
if (!isInArray) { // if all array was iterated and no matching value was found
System.out.println("Value is not in the list");
}
3。使用集合流
此方法仅适用于 Java 8 及更高版本。然后,您可以对流使用 lambda 表达式。但有时使用流可能是多余的。
示例:
String[] array = {"apple", "orange"};
List<String> list = Arrays.asList(array);
String value = "apple";
boolean isInArray = list.stream().anyMatch(item -> item.toLowerCase().equals(value.toLowerCase()));
if (isInArray) {
System.out.println("Value is in the list");
} else {
System.out.println("Value is not in the list");
}