List中存放着从数据库中查询出的对象MapVO,数据如下:
city x y
cA 119 126
cB 162 56
cC 59 16
cE 162 56
cF 162 56
try{
List lt_xy=bo.electronicMapInfo(request, frm);
for(int i=0;i<lt_xy.size();i++){
MapVO vo=(MapVO)lt_xy.get(i);
//这里如何逐一对每条数据里的x y字段进行比较判断,若存在相同的xy如:(cB,cE,cF) ????
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}
}
希望结果是:
cB
cE
cF 162 56
cA 119 126
cC 59 16
city x y
cA 119 126
cB 162 56
cC 59 16
cE 162 56
cF 162 56
try{
List lt_xy=bo.electronicMapInfo(request, frm);
for(int i=0;i<lt_xy.size();i++){
MapVO vo=(MapVO)lt_xy.get(i);
//这里如何逐一对每条数据里的x y字段进行比较判断,若存在相同的xy如:(cB,cE,cF) ????
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}
}
希望结果是:
cB
cE
cF 162 56
cA 119 126
cC 59 16
解决方案 »
- 雪地跪求jstl
- java WEB求助
- [c3p0] Exceptions occurred while trying to close a PooledConnection's resources
- 散发了 就剩10分了!~~~
- Linux中运行.jar文件的问题
- 本人想学structs,可是不知怎么学比较好?哪位能指点一下?个个有分
- 基础问题,请大家帮忙解决
- 用Java连sqlserver的进来指点一下
- 请问:哪里能下到tomcat5.0
- servlet调用标准方法出错
- 如何禁用Eclipse的Debug功能?
- 请问如何从一台服务器的jsp页面跳转到另一台服务器的jsp???还有如何传递数据??
public void abc_sort(List<MapVO> lt_xy){
Map<int[],List<MapVO>> nl = new HashMap<int[],List<MapVO>>();
for(MapVO mv:lt_xy){
boolean existed = false;
for(int[] xy:nl.keySet()){
if(xy[0]==mv.getX() && xy[1]==mv.getY()){
existed = true;
nl.get(xy).add(mv);
break;
}
}
if(!existed){
int[] xy = new int[]{mv.getX(),mv.getY()};
nl.put(xy, new ArrayList<MapVO>());
nl.get(xy).add(mv);
}
}
}
打印你就自己写下吧
cA 119 126
cB 162 56
cC 59 16
cE 162 56
cF 162 56 而是变成下边这样city x y
cA 119 126
cC 59 16
cB 162 56
cE 162 56
cF 162 56显示的时候用探测下一个的xy来决定是否显示当前的。int x=-1,y=-1;
if(lt_xy.size()>1)
{
for(int i=0;i <lt_xy.size()-1;i++){
MapVO vo=(MapVO)lt_xy.get(i);
MapVO vo2=(MapVO)lt_xy.get(i+1);
if(vo.getX()==vo2.getX()&&vo.getY()==vo2.getY())
{
System.out.println(vo.getCity());
}else{
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}
}
MapVO vo=(MapVO)lt_xy.get(i);
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}else
{
MapVO vo=(MapVO)lt_xy.get(0);
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}
我的代码是假设至少有一个以上.0的个情况没有去排除
保存在Map<int[],List<MapVO>> nl里
每个x,y对应一个List<MapVO>就是
129,126: cA 119 126
162,56: cB 162 56, cE 162 56 , cF 162 56
59,16: cC 59 16
从新更正下:
city x y
cA 119 126
cB 162 56
cC 59 16
cE 162 56
cF 162 56
cG 59 16打印结果是:
cB,cE,cF 162 56
cA 119 126
cC,cG 59 16 AWUSOFT 代码不对啊,好像最后一个值判断有误
{
for(int i=0;i <lt_xy.size()-1;i++){
MapVO vo=(MapVO)lt_xy.get(i);
MapVO vo2=(MapVO)lt_xy.get(i+1);
if(vo.getX()==vo2.getX()&&vo.getY()==vo2.getY())
{
System.out.print(vo.getCity()+","); //这里改一下就可以完成你的要求了,不过格式不能对齐哦,不过我想怎么样都无法对齐的啦,因为有些city长一点就不能对齐了.
}else{
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}
}
MapVO vo=(MapVO)lt_xy.get(i);
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}else
{
MapVO vo=(MapVO)lt_xy.get(0);
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}原理差不多就是这样的,哪个地方可以类型合理可以改一下啊
import java.util.*;
public class MovVO
{
private String city;
private int x;
private int y;
public MovVO(){}
public MovVO(String c,int x,int y)
{
this.city = c;this.x=x;this.y=y;
}
public int getY()
{return y;}
public int getX()
{return x;}
public String getCity()
{
return city;
}
public static void main(String []args)
{
List lt_xy = new ArrayList<MovVO>();
lt_xy.add(new MovVO("cA",119,126));
lt_xy.add(new MovVO("cB",162,56));
lt_xy.add(new MovVO("cE",162,56));
lt_xy.add(new MovVO("cF",162,56));
lt_xy.add(new MovVO("cC",59,16));
lt_xy.add(new MovVO("cG",59,16));
if(lt_xy.size()>1)
{
int i=0;
for(i=0;i <lt_xy.size()-1;i++){
MovVO vo=(MovVO)lt_xy.get(i);
MovVO vo2=(MovVO)lt_xy.get(i+1);
if(vo.getX()==vo2.getX()&&vo.getY()==vo2.getY())
{
System.out.print(vo.getCity()+","); //这里改一下就可以完成你的要求了,不过格式不能对齐哦,不过我想怎么样都无法对齐的啦,因为有些city长一点就不能对齐了.
}else{
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}
}
MovVO vo=(MovVO)lt_xy.get(i);
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}else
{
MovVO vo=(MovVO)lt_xy.get(0);
System.out.println(vo.getCity()+" "+vo.getX()+ " "+vo.getY());
}
}
}