我有一个包含6个元素的排序数组列表。前5个元素有一些值,第6个元素是空的。
我想循环遍历此ArrayList,并将第一个记录的前5个元素与下一个记录中的相同元素进行比较。如果元素中的任何一个不同,则填充第6个元素。
任何人都知道更简单快捷的方法吗?
由于 •安格德
答案 0 :(得分:1)
首先将所有记录拆分为多个String[]
,然后解析每个记录中的所有值。之后,您可以将当前记录与第一个记录进行比较。这是一个例子:
public class StringComparison {
ArrayList<String[]> list = new ArrayList<String[]>();
public void comapreStrings() {
// The list you are comparing everything to
String[] firstRecord = list.get(0);
for(int n = 1; n < list.size(); n++) {
String[] currentRecord = list.get(n);
for (int i = 0; i < currentRecord.length; i++) {
String val1 = firstRecord[i];
String val2 = currentRecord[i];
if (val1.equals(val2)) {
// The two strings are the same
} else {
// Replace "a value" with whatever you want to fill the 6th element with
currentRecord[5] = "a value";
}
}
}
}
答案 1 :(得分:0)
也许这可以作为思考的另一种选择:
public String[] generateFirstRow(int startingRow) {
final String[] row1 = rowList.get(startingRow);
final String[] row2 = rowList.get(startingRow + 1);
final List<String> list1 = Arrays.stream(row1).collect(toList());
final List<String> toAdd = Arrays.stream(row2).parallel().sorted().filter(s -> !list1.contains(s)).collect(Collectors.toList());
if (list1.get(list1.size() - 1) == "") {
list1.set(list1.size() - 1, toAdd.get(0));
return list1.toArray(new String[0]);
}
return new String[0];
}
现在你可以每行调用一次,直到前一行。