4 回答
TA贡献1842条经验 获得超12个赞
List.indexOf()
返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1。
List.lastIndexOf()
返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回 -1
更新 不区分大小写的过滤器
List<String> cars = Arrays.asList("Volvo", "Volvo", "BMW", "Ford", "Mazda");
int resultIndex = -1;
for (int i = cars.size()-1; i >=0; i--) {
if (cars.get(i).equalsIgnoreCase("volvo")) {
resultIndex = i;
break;
}
}
System.out.println(resultIndex);
输出 1
TA贡献1829条经验 获得超7个赞
此代码片段可能会帮助您获得所需的内容。
重要提示:调用lastIndexOf()而List不是字符串!
List<String> test=new ArrayList<String>();
test.add("a");
test.add("b");
test.add("a");
test.add("c");
test.add("a");
System.out.println("index is"+ test.lastIndexOf("a"));
预期输出:4(因为“a”位于位置 0、2 和 4)
TA贡献1856条经验 获得超11个赞
如果你想要更多可调整的匹配方式,你也可以使用这个(因为从这个问题看来你可能想要不区分大小写的匹配?):
IntStream.range(0, input.length)
// .filter(ix -> input[ix].compareToIgnoreCase(pattern) == 0) // ignore case matching
.filter(ix -> input[ix].contains(pattern)) // substring matching
.reduce((a, b) -> b) // get last element
.orElseThrow(() -> new RuntimeException("Not found"));
TA贡献1847条经验 获得超11个赞
使用地图,键将是字符串,值将是索引。喜欢:
Object[] cars = { "Volvo", "Volvo", "BMW", "Ford", "Mazda" };
Map<String, Integer> map=new HashMap<>();
for (int i = 0; i < cars.length; i++) {
map.put(cars[i],i);
}
在这里它将更新每个字符串的最后一个索引。用于map.get("Volvo");获取的索引Volvo。
添加回答
举报