2
我有UNIX的列表組的條目的時間戳,例如:爪哇8流通過數值接近
[1111111 1200000 1200060 1200120 1200180 1300000 1400000 140060]
我想將它們組由簇其中在彼此的60秒內的鍵是所述第一時間戳,如:
{1111111=[1111111], 1200000=[1200000,120060, 1200120], 1300000=[1300000], 1400060=[1400000, 1400060]}
我以一個for循環來實現這一點,我希望有這樣做最好使用Java 8流的更好的方法。
(我不是偉大與Java等,如果有不使用流的方式,有沒有更好的構建for循環?)
List <Integer> timestamps = new ArrayList<Integer>();
timestamps.add(1111111);
timestamps.add(1200000);
timestamps.add(1200060);
timestamps.add(1200120);
timestamps.add(1200180);
timestamps.add(1300000);
timestamps.add(1400000);
timestamps.add(1400060);
HashMap <Integer, List <Integer>> grouped = new HashMap<Integer, List <Integer>>();
List <Integer> subList = new ArrayList<Integer>();
for (int i = 0; i < timestamps.size(); i++) {
if(i > 0 && (timestamps.get(i - 1) + 60 < timestamps.get(i))) {
grouped.put(subList.get(0), new ArrayList <Integer>(subList));
subList.removeAll(subList);
}
subList.add(timestamps.get(i));
}
grouped.put(subList.get(0), subList);
謝謝!我還沒有機會嘗試這個圖書館,但我可以看到它確實需要什麼。 –
可惜流API不支持它 –