一个List里面存放了1个对象,对象有2个字段,时间戳,值这样的List可能有若干个,数据大致如下:
第一个list ps:值空格后面的是序列号,表示这个是第几个list
1352822400
12916.73 0
1352822700
11624.7 0
1352823000
10872.0 0第二个list
1352822400
12916.73 1
1352822700
11624.7 1
1352823000
10872.0 1
1352823300
10427.49 1我想提取出相同的时间戳作为key,value部分是一个List<String> 里面存放这个时间戳的2个值,如果是3个list,那就应该是3个值。求如何封装这样一个map?在线等
第一个list ps:值空格后面的是序列号,表示这个是第几个list
1352822400
12916.73 0
1352822700
11624.7 0
1352823000
10872.0 0第二个list
1352822400
12916.73 1
1352822700
11624.7 1
1352823000
10872.0 1
1352823300
10427.49 1我想提取出相同的时间戳作为key,value部分是一个List<String> 里面存放这个时间戳的2个值,如果是3个list,那就应该是3个值。求如何封装这样一个map?在线等
然后取出其时间戳,在Map中找找有没有:没有就增加一个空的List进去;
然后把value取出来(这就是那个 List),并add当前元素的值。
Map<Integer, List<FluxDetailVo>> comparemap) {
Set<Integer> keyset = comparemap.keySet();
Map<Long, List<String>> map = new HashMap<Long, List<String>>();
for (Iterator it = keyset.iterator(); it.hasNext();) {
Integer key = (Integer) it.next();
List<FluxDetailVo> list = comparemap.get(key);
for (FluxDetailVo fluxDetailVo : list) {
List<String> valueslist = new ArrayList<String>();
long timestamp = fluxDetailVo.getTimestamp();
map.put(timestamp, valueslist);
} for (FluxDetailVo fluxDetailVo : list) {
long timestamp = fluxDetailVo.getTimestamp();
String value = fluxDetailVo.getFluxdata() + " " + key;
if (map.containsKey(timestamp)) {
List<String> valuelist = map.get(timestamp);
valuelist.add(value);
}
}
}
}大哥,我是这么写的,但遍历出来的数据,list里面只有最后add的数据,我吓尿了
for (FluxDetailVo fluxDetailVo : list) {
List<String> valueslist = new ArrayList<String>();
long timestamp = fluxDetailVo.getTimestamp();
map.put(timestamp, valueslist);
}
把你上一次外循环所积累的数据全部给清理掉,实际上就相当于:
map.put(fluxDetailVo.getTimestamp(), new ArrayList<String>()); //神啊,你每次都new一个新的建议修改的循环结构(片段)如下: for (Iterator it = keyset.iterator(); it.hasNext();) {
Integer key = (Integer) it.next();
List<FluxDetailVo> list = comparemap.get(key);
for (FluxDetailVo fluxDetailVo : list) {
long timestamp = fluxDetailVo.getTimestamp();
String value = fluxDetailVo.getFluxdata() + " " + key;
if (!map.containsKey(timestamp)) {
map.put(timestamp, new ArrayList<String>());
}
List<String> valuelist = map.get(timestamp);
valuelist.add(value);
}
}