如果两个或多个用户具有相同的高度和体重,则忽略这些项目并添加一个项目并设置名称多个。我尝试下面的代码,但我无法删除相同的项目。
信息类
public class Info {
public String name;
public int height;
public int weight;
public Info(String name,int height, int weight) {
this.height = height;
this.weight = weight;
this.name=name;
}
}
主类
List<Info> infoList = new ArrayList<>();
List<Info> infoListFiltered = new ArrayList<>();
infoList.add(new Info("a",1, 2));
infoList.add(new Info("b",2, 2));
infoList.add(new Info("c",1, 3));
infoList.add(new Info("d",1, 2));
infoList.add(new Info("e",1, 2));
for (int i = 0; i < infoList.size(); i++) {
for (int j = i+1; j < infoList.size(); j++) {
if(infoList.get(i).height==infoList.get(j).height&&infoList.get(i).weight==infoList.get(j).weight) {
infoList.get(i).name="multi";
infoListFiltered.add(infoList.get(i));
}else {
infoListFiltered.add(infoList.get(i));
}
}
}
有什么建议吗?
最佳答案
尝试这种方式,看看它是否适合你。
public void processData() {
List<Info> infoList = new ArrayList<>();
List<Info> infoListFiltered = new ArrayList<>();
infoList.add(new Info("a",1, 2));
infoList.add(new Info("b",2, 2));
infoList.add(new Info("c",1, 3));
infoList.add(new Info("d",1, 2));
infoList.add(new Info("e",1, 2));
for (Info info:infoList){
int index=getDuplicateIndex(infoListFiltered,info);
if(index==-1){
infoListFiltered.add(info);
}else{
infoListFiltered.get(index).name+=","+info.name;
}
}
}
private int getDuplicateIndex(List<Info> infoListFiltered,Info info){
for (int i = 0; i < infoListFiltered.size(); i++){
if(infoListFiltered.get(i).height==info.height && infoListFiltered.get(i).weight==info.weight){
return i;
}
}
return -1;
}
关于java - 如何忽略列表中的重复项并改为添加一项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990451/