您的位置:首页 > 编程语言 > Java开发

Java HashMap嵌套List实现对多目标进行列表分类

2017-03-16 14:16 387 查看
package com.ict.hive.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Created by chenlong on 2017/3/16.
*/
public class ClassShipPosition {
//初始化一个需要使用的List
public static List<ShipPosition> init(){
List<ShipPosition> shipInfoList=new ArrayList<ShipPosition>();
//目标1
ShipPosition shipPositon1=new ShipPosition(1,60,120,60);
shipInfoList.add(shipPositon1);
//目标2的轨迹
ShipPosition shipPositon2=new ShipPosition(2,58,121,60);
shipInfoList.add(shipPositon2);
ShipPosition shipPositon6=new ShipPosition(2,58,122,60);
shipInfoList.add(shipPositon6);
//目标3的轨迹
ShipPosition shipPositon3=new ShipPosition(3,59,122,60);
shipInfoList.add(shipPositon3);
ShipPosition shipPositon4=new ShipPosition(3,59,123,60);
shipInfoList.add(shipPositon4);
ShipPosition shipPositon5=new ShipPosition(3,59,124,60);
shipInfoList.add(shipPositon5);
return shipInfoList;
}

public static void main(String[] args){
/**
* 现在需要对不同的目标放在不同的列表里面,怎么实现呢?
* 感觉使用map和List都差一点,于是使用Map嵌套List,并且写函数实现:有这个目标就添加进以目标ID为key,船舶位置列表为value的Map中,没有就新建key和列表
*/
//初始化一个需要使用的List
List<ShipPosition> shipPositonList=init();

int ID;
Map<String,ArrayList<ShipPosition>> map=new HashMap<String,ArrayList<ShipPosition>>();
for(int i=0;i<shipPositonList.size();i++){
ID=shipPositonList.get(i).getId();
//调用该方法生成以ID为Key,以目标位置列表为List的Map
putAdd(map,Integer.toString(ID),shipPositonList.get(i));
}

//遍历输出分类后的结果
Dump(map);
}

/**
* 有这个目标就添加进以目标ID为key,船舶位置列表为value的Map中,没有就新建key和列表函数
* @param map
* @param key
* @param shipPositon
* @return
*/
public static Map<String,ArrayList<ShipPosition>> putAdd(Map<String,ArrayList<ShipPosition>> map, String key, ShipPosition shipPositon)
{
if(!map.containsKey(key)){
map.put(key, new ArrayList<ShipPosition>());
}
map.get(key).add(shipPositon);
return map;
}

/**
* 打印结果
* @param map
*/
public static void Dump(Map<String,ArrayList<ShipPosition>> map){
for(Map.Entry<String,ArrayList<ShipPosition>> entry:map.entrySet()){
System.out.println("Key:"+entry.getKey());
for(ShipPosition shipPosition:entry.getValue()){
System.out.println("Value-List:"+shipPosition.getId()+","+shipPosition.getSpeed()+","+shipPosition.getLongitude()+","+shipPosition.getLatitude());
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: