猿问

如果数组中有多个值匹配,如何获取值的最后一个索引号?

我有一个包含以下值的数组:


[Ram、Shyam、Ravi、Ravi、Ravi、Rishi]


我想获取每个字符串的索引号,以便如果有匹配的字符串,则获取最后一个匹配的字符串索引。


ei 从上面的数组中搜索“ravi”,输出应该给我索引号是。“4”。


这是我的代码:


Object[] cars = { "Volvo", "Volvo", "BMW", "Ford", "Mazda" };

    for (int i = 0; i < cars.length; i++) {

        System.out.println(cars[i].lastIndexOf("Volvo"));

    }

}  

输出:0 0 -1 -1 -1


慕运维8079593
浏览 172回答 4
4回答

红颜莎娜

List.indexOf()返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则返回 -1。List.lastIndexOf()返回此列表中指定元素最后一次出现的索引,如果此列表不包含该元素,则返回 -1更新 不区分大小写的过滤器&nbsp; &nbsp; List<String> cars = Arrays.asList("Volvo", "Volvo", "BMW", "Ford", "Mazda");&nbsp; &nbsp; int resultIndex = -1;&nbsp; &nbsp; for (int i = cars.size()-1; i >=0; i--) {&nbsp; &nbsp; &nbsp; &nbsp; if (cars.get(i).equalsIgnoreCase("volvo")) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; resultIndex = i;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println(resultIndex);输出 1

千巷猫影

此代码片段可能会帮助您获得所需的内容。重要提示:调用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)

呼唤远方

如果你想要更多可调整的匹配方式,你也可以使用这个(因为从这个问题看来你可能想要不区分大小写的匹配?):IntStream.range(0, input.length)&nbsp; &nbsp; //&nbsp; &nbsp; &nbsp; .filter(ix -> input[ix].compareToIgnoreCase(pattern) == 0) // ignore case matching&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .filter(ix -> input[ix].contains(pattern)) // substring matching&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .reduce((a, b) -> b) // get last element&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .orElseThrow(() -> new RuntimeException("Not found"));

回首忆惘然

使用地图,键将是字符串,值将是索引。喜欢:Object[] cars = { "Volvo", "Volvo", "BMW", "Ford", "Mazda" };Map<String, Integer> map=new HashMap<>();for (int i = 0; i < cars.length; i++) {&nbsp; &nbsp; map.put(cars[i],i);}在这里它将更新每个字符串的最后一个索引。用于map.get("Volvo");获取的索引Volvo。
随时随地看视频慕课网APP

相关分类

Java
我要回答