嗨,我有两个自定义数组列表,我想从一个数组列表中删除与第二个数组列表匹配的类似项。
List<Daily_Stock_Pojo> dailyStockArrayListOne = new ArrayList<Daily_Stock_Pojo>();
List<Daily_Stock_Pojo> dailyStockArrayListTwo = new ArrayList<Daily_Stock_Pojo>();
List<Daily_Stock_Pojo> added = new ArrayList<Daily_Stock_Pojo>(dailyStockArrayListOne);
added.removeAll(dailyStockArrayListTwo);
public class Daily_Stock_Pojo {
private Date Calendar_Date;
private int Store_Id;
private int Item_Id;
private int Stock_Volume;
private String MRP;
private String objectId;
public Daily_Stock_Pojo(Date calendar_Date, int store_Id, int item_Id, int stock_Volume, String MRP, String objectId) {
Calendar_Date = calendar_Date;
Store_Id = store_Id;
Item_Id = item_Id;
Stock_Volume = stock_Volume;
this.MRP = MRP;
this.objectId = objectId;
}
public Date getCalendar_Date() {
return Calendar_Date;
}
public void setCalendar_Date(Date calendar_Date) {
Calendar_Date = calendar_Date;
}
public int getStore_Id() {
return Store_Id;
}
public void setStore_Id(int store_Id) {
Store_Id = store_Id;
}
public int getItem_Id() {
return Item_Id;
}
public void setItem_Id(int item_Id) {
Item_Id = item_Id;
}
public int getStock_Volume() {
return Stock_Volume;
}
public void setStock_Volume(int stock_Volume) {
Stock_Volume = stock_Volume;
}
public String getMRP() {
return MRP;
}
public void setMRP(String MRP) {
this.MRP = MRP;
}
public String getObjectId() {
return objectId;
}
public void setObjectId(String objectId) {
this.objectId = objectId;
}
}
你的算法是对的。您只需为daily_stock_pojo
正确定义equals()
方法。列表#removeAll()
将使用equals()
执行匹配并删除元素。
如果您没有定义适当的equals()
,则使用Object
类中定义的那个(所有类都隐式地继承自Object
类),并且实现将只检查引用(对象java文档中的equals),而这通常不是您想要的。
作为一个很好的度量,您还应该定义一个hashCode()
方法,该方法重写object
中的方法。例如,如果您打算将您的对象用作HashMap
中的键或HashSet
中的元素,那么这将非常有用。
如果您使用Eclipse这样的IDE,那么应该有一个生成这两个方法的选项。其思想是使用将确定两个对象如何相同的类属性。
当使用菜单“source>generate hashCode()and equals()...”时,Eclipse给出的默认实现如下。我选择从类中生成所有属性。如果不希望属性成为daily_stock_pojo
标识的一部分,请将其从方法中删除。
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((Calendar_Date == null) ? 0 : Calendar_Date.hashCode());
result = prime * result + Item_Id;
result = prime * result + ((MRP == null) ? 0 : MRP.hashCode());
result = prime * result + Stock_Volume;
result = prime * result + Store_Id;
result = prime * result
+ ((objectId == null) ? 0 : objectId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Daily_Stock_Pojo other = (Daily_Stock_Pojo) obj;
if (Calendar_Date == null) {
if (other.Calendar_Date != null)
return false;
} else if (!Calendar_Date.equals(other.Calendar_Date))
return false;
if (Item_Id != other.Item_Id)
return false;
if (MRP == null) {
if (other.MRP != null)
return false;
} else if (!MRP.equals(other.MRP))
return false;
if (Stock_Volume != other.Stock_Volume)
return false;
if (Store_Id != other.Store_Id)
return false;
if (objectId == null) {
if (other.objectId != null)
return false;
} else if (!objectId.equals(other.objectId))
return false;
return true;
}
Date Calendar_Date;
public Date getCalendar_Date() {
return Calendar_Date;
}
应该是:
Date calendarDate;
public Date getCalendarDate() {
return calendarDate;
}
类成员以小写开头。类成员或类名中没有连字符。使用camelcase
(用于类名)或camelcase
(用于成员名)。
我正在做一个学校作业,我必须检查ArrayList teKoop中的某些对象是否不在ArrayList mijnGames中,问题是我一直设置这个错误代码:索引1 out of length 1 out of bounds for length 1 这里有什么明显的问题吗? 如有任何帮助,我们将不胜感激。 因此indexOutOfBound错误已修复,新问题出现:s 它一直返回给我一个空的Arra
问题内容: 我有两个。每个大小为100000。我想比较它们并计算匹配的元素。 这是我的代码: 在这里比较过程要花费很多时间。 如何解决和优化此问题。 问题答案: 您应该使用:返回一个包含collection1中所有元素的集合,这些元素也处于collection2中。
我得到了两个字符串类型arraylist。一个列表包含“book1”、“book2”、“book3”和“book4”。另一个arrayList包含“book1”、“book2”、“book3”。因此,第一个列表的大小为4,第二个列表的大小为3。我创建了另一个与第一个列表大小相等的arrayList 但是当我这样做的时候,我不能设置1,因为我不能进入if状态,有人能帮我吗
问题内容: 我得到了两个String类型的arraylist ..一个包含“ book1”,“ book2”,“ book3”和“ book4”的列表。另一个arrayList包含“ book1”,“ book2”,“ book3”。因此,第一个列表的大小为4,第二个列表的大小为3。我创建了另一个与第一个列表的大小相等的arrayList 如果两个列表之间的内容相等,那么我将设置为1而不是0。 所
给定两个csv文件: 我想创建一个新的csv文件,我们将调用UpdatedList.csv,它具有来自File1.csv的每个条目减去SKU在File1.csv和File2.csv.的任何行 下面的代码会做我想做的,但是我相信有一个更有效的方法。没有循环我怎么能做到这一点?我的代码如下。
我有两个文件file1。txt和file2。txt。 文件1。文本 file2.txt 我想匹配文件1的第1、2和3列。带有文件2第1、4和5列的txt。txt。如果匹配,则将匹配行与以下行一起打印,直到,但不要打印。我用“awk”命令试过了