有这样一个数组如下
序号 姓名 年龄 身高
01 张三 10 170
02 李四 20 175
03 马五 20 175
04 王六 20 175
05 孙七 23 180
06 陈八 23 180
07 赵九 30 160
08 吴十 30 160
....
如何只通过年龄与身高去除重复的元素。
而姓名不管,只保留第一次出现的名字
去除重复后变成如下数组
序号 姓名 年龄 身高
01 张三 10 170
02 李四 20 175
03 孙七 23 180
04 赵九 30 160
....
这个问题困扰我很久,请好人帮忙解决一下。最好给出代码例子。
用数组或list做出来都可以。
cdsn高人多我想不会令我失望,小弟万分感谢 !!!!
先给50分,解决了困扰剩下的分再都给好心的大哥大姐们
棘手问题
------解决方案--------------------
Users users =new Users("01","张三 ",10,170);
Users users1 =new Users("02","wangwu ",20,180);
Users users2 =new Users("03","zhangliu",20,180);
Users users3 =new Users("04","张qi ",10,170);
Users users4 =new Users("05","wu三 ",20,170);
Users users5 =new Users("05","wu三 ",10,170);
List<Users> userList = new ArrayList<Users>();
userList.add(users);
userList.add(users1);
userList.add(users2);
userList.add(users3);
userList.add(users4);
userList.add(users5);
List<Users> userListb = new ArrayList<Users>();
for(int i=0;i<userList.size();i++) {
boolean flg = false;
for(int j=0;j<i;j++) {
if(userList.get(i).getAge() == userList.get(j).getAge() && userList.get(i).getHigh() == userList.get(j).getHigh()) {
flg = true;
continue;
}
}
if(!flg) {
userListb.add(userList.get(i));
}
}
------解决方案--------------------
假定有一个User类,负责处理每个人的信息
Map<String,User> map = new HashMap<String,User>
map.put(user1.getTall+user1.getAge,user1);
//对每个user都做这个操作,先put进map里的user会因为后put的user的key而被覆盖
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
List<User> list = new ArrayList<User>();
while(it.hasNext())
{
list.add(map.get(it.next()));
}
大致就是这么做的了
------解决方案--------------------
public boolean equals(Object obj){
if(obj instanceof User){
User usertest =(User)obj;
if(usertest.getAge()==age&&usertest.getHigh()==high){
return true;
}
}
return false;
}
public int hashCode(){
String age1=Integer.toString(age) ;
String high1=Integer.toString(high);
int i=Integer.parseInt(age1+high1);
return i;
}
重寫 equals和hashCode方法 然後放到set中 取出來 就好了 不過沒排序
------解决方案--------------------
public class Users {
private String id;
private String name;
private int age;
private int height;
public Users(String id, String name, int age, int height) {
super();
this.id = id;
this.name = name;
this.age = age;
this.height = height;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Users other = (Users) obj;
if (age != other.age)
return false;
if (height != other.height)
return false;
return true;
}