gpt4 book ai didi

java - 获取 ArrayList 中第二个相同的值

转载 作者:行者123 更新时间:2023-11-30 08:08:34 24 4
gpt4 key购买 nike

我正在尝试添加标记New direction到 arrayList mergeArray当我找到第二个3buffer 中的值arrayList 但我总是得到第一个 3 ArrayList 中的值。阿姆斯特丹之后如何获得第二个?

感谢任何帮助。

输出:

paris
3
water
ball
money
Amsterdam
3
door

输出应如下所示:

paris
3
water
ball
money
New direction
Amsterdam
3
door

代码:

    public static void main(String[] args) {

ArrayList<String> buffer = new ArrayList<String>();
ArrayList<String> mergeArray = new ArrayList<String>();

String route = "3";
String direction = "paris";
String start = "Amsterdam";

buffer.add("paris");
buffer.add("3");
buffer.add("water");
buffer.add("ball");
buffer.add("money");
buffer.add("Amsterdam");
buffer.add("3");
buffer.add("door");

for (String line : buffer) {
if (line.equals(route)) {
mergeArray.add(line);
int index = buffer.indexOf(line);
String prevElement = buffer.get(index - 1);
if (prevElement == direction) {
String addElem = buffer.get(index + 1);
mergeArray.add(addElem);

} else if (prevElement == start) {
mergeArray.add("New direction");

}

}

}
for (String key : mergeArray) {
System.out.println(key);
}

}

最佳答案

不要使用indexOf,因为它总是检索第一次出现的索引。

保留辅助索引变量并在循环中使用它:

int auxIndex = 0;
for (String line : buffer) {
if (line.equals(route)) {
mergeArray.add(line);
String prevElement = buffer.get(auxIndex - 1);
if (prevElement.equals(direction)) {
String addElem = buffer.get(auxIndex + 1);
mergeArray.add(addElem);

} else if (prevElement.equals(start)) {
mergeArray.add("New direction");

}

}
auxIndex++
}

还添加安全检查,以便索引不会下溢/溢出

关于java - 获取 ArrayList<String> 中第二个相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30730881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com