gpt4 book ai didi

Java 比较两个相同大小的字符串列表,其中顺序很重要

转载 作者:行者123 更新时间:2023-12-01 16:31:56 24 4
gpt4 key购买 nike

我目前在比较两个字符串列表时陷入困境。以下是输入:

First list : three, two, ten, five.
Second list: three, ten, two, five.

顺序在两个列表中都很重要,因为:如果一个元素索引在其他列表中不同,那么它应该放置一个空行。

为了更清晰起见,我附上了屏幕截图。

enter image description here

这是我的代码

public static void main(String[] args) {

List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();


list1.add("three");
list1.add("two");
list1.add("ten");
list1.add("five");

list2.add("three");
list2.add("ten");
list2.add("two");
list2.add("five");

for(int iIndex = 0, jIndex = 0; iIndex < list1.size() && jIndex < list2.size(); iIndex ++, jIndex++) {
if(!list1.get(iIndex).contentEquals(list2.get(jIndex))) {
list1.add(jIndex, "");
}
}

注意:在发布此问题之前,我已搜索并检查了列出的每个主题。谢谢您的帮助

最佳答案

如果我正确理解你的问题,你需要这样的东西

int size = list2.size();
for(int i = 0; i < size ; i++) {
if(!list1.get(i).contentEquals(list2.get(i))) {
if(list2.size() <= list1.size()) {
list2.add(i, "XXX");
size +=1;
} else {
list1.add(i, "XXX");
}
}
}

输出将是:

three   three
two XXX
ten ten
XXX two
five five

我添加了 XXX 以便更轻松地查看它们。您还应该检查列表大小不相等的情况,因为它可能会改变程序的预期输出。

更新:

你可以尝试做这样的事情。

int size = list1.size();
for(int i = 0; i < size; i++) {
if(list1.size() == i){
list1.add(i, "XXX");
continue;
}
if(list2.size() == i){
list2.add(i, "XXX");
continue;
}
if(!list1.get(i).contentEquals(list2.get(i))) {
int next_index1 = list2.subList(i, list2.size()).indexOf(list1.get(i));
int next_index2 = list1.subList(i, list1.size()).indexOf(list2.get(i));

if (next_index1 == -1){
list2.add(i, "XXX");
}
else if(next_index2 == -1){
list1.add(i, "XXX");
}
else if(next_index1 < next_index2) {
list1.add(i, "XXX");
} else {
list2.add(i, "XXX");
}
}
size = list1.size() < list2.size() ? list2.size() : list1.size();
}
for(int i = 0; i < size ; i++) {
System.out.println(list1.get(i) + " " + list2.get(i));
}

简而言之,它将检查另一个列表中字符串最近出现的时间。例如,如果您的列表是:

three   three
two ten
ten two
five five

在每个列表中的第一个元素之后,因为它们相同,所以它将找到第一个列表中的当前位置与第二个列表中该元素第一次出现的索引之间的距离,反之亦然。如果距离相等,那么它将在第二个列表中添加空间。所以结果将是

three   three
two XXX
ten ten
XXX two
five five

但是如果你的 list 是

three   three
two ten
five two

输出将是

three   three
XXX ten
two two
five XXX

关于Java 比较两个相同大小的字符串列表,其中顺序很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62020649/

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