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());
}
}
}
}
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());
}
}
}
}
相关文章推荐
- 最简单的对Java List列表按中文拼音排序的实现方式
- java中运用HashMap进行分类分拣方法
- Java对List进行排序的两种实现方法
- java 实现简易List列表
- 在java List中进行模糊查询的实现方法
- Java实现根据List中对象的相应属性进行排序
- DataList嵌套GridView实现文章分类列表显示
- java对List<Object>型列表进行排序(通过内部类对compare(**)方法重写)
- DataList嵌套GridView实现文章分类列表显示
- java中List对象列表实现去重或取出及排序的方法
- Java实现从IP和端口列表List<String>获取分离的IP和端口值
- Zookeeper实现服务上下线监控服务列表 分类: hadoop Java 2015-06-25 22:37 71人阅读 评论(0) 收藏
- java List嵌套List进行前台循环输出
- HashMap存取效率高原因、ArrayList和LinkedList区别、JAVA实现链表的基本功能
- DataList 嵌套GridView实现文章分类列表显示[转]
- JAVA 实现在内存中对列表进行排序
- java 实现List对象中按某种方式进行排序
- 利用朴素贝叶斯算法进行分类-Java代码实现
- 【JAVA实现】用Logistic回归进行分类
- 问题集录01--java对list列表进行排序