[英]How to check if an item in an arrayList already exists and add count in Java?
[英]ArrayList check if data already exists
只想檢查數據是否已存在於ArrayList中,但每次都得到:Not Exist(s)而數據存在於ArrayList中,因此我在列表中獲得重復記錄。
DataArrayList.secondArraylist.add(new Second(actorList.get(position).getName(), actorList.get(position).getImage()));
System.out.println(DataArrayList.secondArraylist.size());
String strName = actorList.get(position).getName().toString();
Log.d("name:", strName);
for(int i=0; i<DataArrayList.secondArraylist.size(); i++)
{
if(DataArrayList.secondArraylist.get(i).getName().equals(strName)) {
System.out.println(DataArrayList.secondArraylist.get(i).getName());
Toast.makeText(context, "Exist(s)", Toast.LENGTH_SHORT);
}
else {
Toast.makeText(context, "Not Exist(s)", Toast.LENGTH_SHORT);
}
}
問題:
沒有得到任何Toast消息,我用它來表示“數據存在”或“不存在”
最后:
我想將項目添加到arraylist如果已經不存在,否則想要顯示Toast該項目已經存在(s)
您正在將列表對象DataArrayList.secondArraylist
與String
進行比較
if (DataArrayList.secondArraylist.equals(strName)) {
那將永遠是false
。 而是創建一個循環遍歷列表的方法,並根據列表中存儲的Second
對象的名稱檢查strName
。
boolean contains(ArrayList<Second> list, String name) {
for (Second item : list) {
if (item.getName().equals(name)) {
return true;
}
}
return false;
}
然后使用它
if (contains(DataArrayList.secondArraylist, strName)) {
System.out.println("Data Exist(s)");
} else {
System.out.println("Not Exist(s)");
}
contains方法使用簽名equals(Object)調用equals方法,因此您需要在POJO類中重寫此方法。
如果你重寫equals(Object),那么你也應該覆蓋hashcode()
代碼段:
@Override
public String toString() {
return getName();
}
@Override
public boolean equals(Object obj) {
return !super.equals(obj);
}
@Override
public int hashCode() {
return getName().hashCode();
}
而且, contains方法用於Object。 所以,你的情況應該是這樣的:
(DataArrayList.secondArraylist.contains(actorList.get(position)))
最終代碼:
if (DataArrayList.secondArraylist.contains(actorList.get(position))) {
System.out.println("Data Exist(s)");
} else {
System.out.println("Not Exist(s)");
}
您需要在檢查ArrayList中的值時使用indexOf()
if (DataArrayList.secondArraylist.indexOf(strName)!=-1) {
System.out.println("Data Exist(s)");
} else {
System.out.println("Not Exist(s)");
}
由於您要檢查的strName
是Object Second
的屬性,因此無法使用ArrayList
方法直接檢查它。 最簡單的方法是遍歷ArrayList DataArrayList.secondArraylist
,獲取列表中包含的每個Second
對象,然后檢查strName
是否等於Second
對象的該屬性。
不確定如何實現Second
對象,但是你應該從每個Second
對象獲取相應的String,然后將它與strName
進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.