2016-05-14 9 views
0

6つの要素でソートされた配列リストがあります。最初の5つの要素には値があり、6番目の要素は空です。Java:arraylistの現在のレコードと前のレコードを比較します

このArrayListをループし、最初のレコードの最初の5要素と次のレコードの同じ要素を比較したいとします。要素のいずれかが異なる場合は、6番目の要素を設定します。

これを行うには、誰かがもっと簡単で迅速な方法を知っていますか?

おかげ Angad

+2

あなたの試行を追加してください。 – Andrew

答えて

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"; 
      } 
     } 
    } 
} 
+0

ありがとうございますAkash、しかし、私は唯一のarraylistがあります。レコードをレコードごとに比較する必要があります。私の要件は、新しいレコードが見つかるたびにシーケンスIDを生成することです。 – Angad

+0

レコードではどういう意味ですか? – AkashBhave

+1

以下は私のArraylistの例です Row1:A1、B1、C1、D1、E1、 ' Row2:A1、B1、C1、D1、E2、' ' 最初の行の値と次の上記の場合、E1!= E2なので、それは異なっているので、シーケンス番号を生成し、現在空白の配列の6番目の要素を設定する必要があります。 – Angad

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

} 

今あなたが前の最後の1刚性持って行ごとにこれを呼び出すことができます。

関連する問題