6つの要素でソートされた配列リストがあります。最初の5つの要素には値があり、6番目の要素は空です。Java:arraylistの現在のレコードと前のレコードを比較します
このArrayListをループし、最初のレコードの最初の5要素と次のレコードの同じ要素を比較したいとします。要素のいずれかが異なる場合は、6番目の要素を設定します。
これを行うには、誰かがもっと簡単で迅速な方法を知っていますか?
おかげ Angad
6つの要素でソートされた配列リストがあります。最初の5つの要素には値があり、6番目の要素は空です。Java:arraylistの現在のレコードと前のレコードを比較します
このArrayListをループし、最初のレコードの最初の5要素と次のレコードの同じ要素を比較したいとします。要素のいずれかが異なる場合は、6番目の要素を設定します。
これを行うには、誰かがもっと簡単で迅速な方法を知っていますか?
おかげ Angad
まずスプリット多く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";
}
}
}
}
ありがとうございますAkash、しかし、私は唯一のarraylistがあります。レコードをレコードごとに比較する必要があります。私の要件は、新しいレコードが見つかるたびにシーケンスIDを生成することです。 – Angad
レコードではどういう意味ですか? – AkashBhave
以下は私のArraylistの例です Row1:A1、B1、C1、D1、E1、 ' Row2:A1、B1、C1、D1、E2、' ' 最初の行の値と次の上記の場合、E1!= E2なので、それは異なっているので、シーケンス番号を生成し、現在空白の配列の6番目の要素を設定する必要があります。 – Angad
多分これが考える選択肢が考えられます。
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];
}
今あなたが前の最後の1刚性持って行ごとにこれを呼び出すことができます。
あなたの試行を追加してください。 – Andrew