Java:将先前的记录与arraylist中的当前记录进行比较

时间:2016-05-14 17:24:10

标签: java

我有一个包含6个元素的排序数组列表。前5个元素有一些值,第6个元素是空的。

我想循环遍历此ArrayList,并将第一个记录的前5个元素与下一个记录中的相同元素进行比较。如果元素中的任何一个不同,则填充第6个元素。

任何人都知道更简单快捷的方法吗?

由于 •安格德

2 个答案:

答案 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];

}

现在你可以每行调用一次,直到前一行。