[英]Java how to remove an object from one ArrayList while adding it to another?
[英]How do I remove objects from an arraylist which are present in another arraylist based on one member variable of the object in Java?
我有一個具有以下結構的POJO類A
class A{
private String var1;
private int var2;
private String var3;
}
我有兩個具有不同大小的ArrayList<A> List1
和List2
。 我想刪除List1
中已經存在於List2
中的所有元素,並且需要針對存儲在var2
的值檢查這種相等性。
我已經檢查過將List Hashset
並使用removeAll()
。 但這不會提供所需的輸出,因為對於相同的var2
, var1
值不同。
請幫我解決這個問題。
編輯1-穆拉特要求
public class HistoryDto implements Serializable,Comparable<HistoryDto> {
private Integer id;
private String sId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSId() {
return sId;
}
public void setSId(String sId) {
this.sId = sId;
}
public String getTrackName() {
return trackName;
}
public void setTrackName(String trackName) {
this.trackName = trackName;
}
public String getTrackDescription() {
return trackDescription;
}
public void setTrackDescription(String trackDescription) {
this.trackDescription = trackDescription;
}
public Integer getUsedNo() {
return usedNo;
}
public void setUsedNo(Integer usedNo) {
this.usedNo = usedNo;
}
public String getExtraInfo() {
return extraInfo;
}
public void setExtraInfo(String extraInfo) {
this.extraInfo = extraInfo;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public Integer getPartyId() {
return partyId;
}
public void setPartyId(Integer partyId) {
this.partyId = partyId;
}
private String trackName;
private String trackDescription;
private Integer usedNo;
private String extraInfo;
private String imageUrl;
private Integer partyId;
public int compareTo(HistoryDto other) {
return this.sId.compareTo(other.sId);
}
}
移除物品
ListA.removeAll(new HashSet(listB));
您可以使用Stream API來做到這一點:
Set<Integer> var2 = list2.stream()
.map(a -> a.var2)
.collect(Collectors.toSet());
list1.stream()
.filter(a -> !var2.contains(a.var2))
.collect(Collectors.toList());
您需要嵌套2個循環。
偽代碼:
for each in A do
for each in B do
if (current item of A equals to current item of B)
say yes!
done
done
您只需要將其翻譯成Java。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.