2016-11-10 19 views
-2

は、私はいくつかの日付日付の分割アレイ

2016-11-11T12の配列を有する13:14.120Z

2016-11-13T12:13:14.120Z

2016-12-10T12:12:14.120Z

2016-12-10T12:13:14.120Z

2016-12-10T15:13:14.120Z

2016-12-11T12:13:14.120Z

2017-01-11T12:13:14.120Z

は、私が何かを達成する必要がありますこの:

[[2016-11-11T12:13:14.120Z, 2016-11-12T12:13:14.120Z], [2016-11-13T12:13:14.120Z], [2016-12-10T12:12:14.120Z,2016-12-10T12:13:14.120Z,2016-12-10T15:13:14.120Z, 2016-12-11T12:13:14.120Z], [2017-01-11T12:13:14.120Z]] 

最初とn + 1日の違いはこの日付が他の配列になっている必要があり、24時間後、小さければ

- その次のアレイとを作成します。

私はそれだけで

int step = 24; 
    int currentPos = 0; 

ArrayList<ArrayList<Item>> result = new ArrayList<>(); 
    ArrayList<Item> currentArray = new ArrayList<>(); 

    for (int i = 0; i < items.size(); i++) { 
      Item item = items.get(currentPos); 
      for (int j = 0; j < items.size(); j++) { 
       int tmp = currentPos + 1; 
       if (DateUtils.getDifferenceInHours(item.getEndDate(), items.get(tmp).getEndDate()) <= step) { 
        currentArray.add(items.get(tmp)); 
        currentPos++; 
       } else { 
        currentArray.add(item); 
        result.add(currentArray); 
        currentArray = new ArrayList<>(); 
        currentPos++; 
        break; 
       } 

      } 
    } 

ような何かを書くことができますが、私ははIndexOutOfBoundsException 持っている、助けてください!

+0

あなたはこれまでに何をしましたか?コードを表示する。 –

+0

@KNeerajLal日付を比較しましたが、正しい結果を得るために正しいループを書きません。 –

+0

コードを表示し、問題の原因を説明してください。 –

答えて

0

これはintegers.Iと簡略化した例である結果から重複を削除するSetを使用します。

これを試してみてください

// Create sample ArrayList. Don't do this in your actual code. 
ArrayList<Integer> items = new ArrayList<Integer>() { 
    { 
     add(1); 
     add(2); 
     add(3); 
     add(2); 
     add(3); 
     add(2);     
     add(4);     
    } 
}; 

int step = 24; 
Set<ArrayList<Integer>> result = new HashSet<>();  

for (int i = 0; i < items.size(); i++) { 
    Integer item1 = items.get(i); 
    ArrayList<Integer> currentArray = new ArrayList<>(); 
    for (int j = 0; j < items.size(); j++) { 
     Integer item2 = items.get(j); 
     if (item1 == item2) { // This is where you need to find the difference of dates 
      currentArray.add(item1); 
     } 
    } 
    result.add(currentArray); 
} 

System.out.println(result); 

出力は、

[[4], [1], [3, 3], [2, 2, 2]] 
+1

ありがとう、やっと、それは動作します! –

0
これにあなたのコードを変更

for (int i = 0; i < items.size(); i++) { 
     for (int item : items) { 
     for (int j = 0; j < items.size(); j++) { 
      int tmp = currentPos + 1; 
      if (DateUtils.getDifferenceInHours(item.getEndDate(), items.get(tmp).getEndDate()) <= step) { 
       currentArray.add(items.get(tmp)); 
       currentPos++; 
      } else { 
       currentArray.add(item); 
       result.add(currentArray); 
       currentArray = new ArrayList<>(); 
       currentPos++; 
       break; 
      } 

     } 
    } 
} 
+0

アイテムitem = items.get(currentPos);この行のインデックスの範囲外の例外があります –

+0

私は私の答えを編集しました。 –

+0

配列の最後の項目が見つからない –

関連する問題