2016-07-30 1 views
4

ストリームAPIを使用して2つの整数配列を比較し、両方の配列が同じで、同じインデックスを持つ要素を含む配列を返すことはできますか?同じ長さ)。java 8の機能を使用して2つのint配列から同一の値を取得

私は、Java 8を使用していないここに方法があります:

public static int[] identicalValueAndIndex(int[] array1, int[] array2) { 
    List<Integer> values = new ArrayList<Integer>(); 
    int len = array1.length; 
    for (int i = 0, k = 0; i < len; i++) { 
     if (array1[i] == array2[i]) { 
      values.add(array1[i]); 
     } 
    } 
    int[] result = new int[values.size()]; 
    for (int i = 0; i < values.size(); i++) { 
     result[i] = values.get(i); 
    } 
    return result; 
} 

私はストリームとなった最も近いがこれです:インデックスが同じであれば、この方法は、テストするものではありませんしかし

public static int[] identicalValueAndIndex(int[] array1, int[] array2) { 
    return Arrays.stream(array1) 
      .filter(n -> Arrays.stream(array2).anyMatch(num -> n == num)) 
      .toArray(); 
} 

答えて

6
int[] values = IntStream.range(0, array1.length) 
         .filter(i -> array1[i] == array2[i]) 
         .map(i -> array1[i]) 
         .toArray(); 

コードを編集しました。以前のバージョンでは、この配列が値をint配列に収集していたためです。

+0

うん、それは動作します。どうもありがとうございました! –

関連する問題