什么问题/陷阱,必须重写时,必须考虑equals和hashCode?
我有一个数组,我正在寻找重复.
duplicates = false;
for(j = 0; j < zipcodeList.length; j++){
for(k = 0; k < zipcodeList.length; k++){
if (zipcodeList[k] == zipcodeList[j]){
duplicates = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当没有重复时,此代码不起作用.为什么?
假设我像这样创建一些对象类
public class thing {
private String name;
private Integer num;
public oDetails (String a, Integer b) {
name = a;
num = b;
}
...gets/ sets/ etc
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个arraylist来保存这样的对象类.
ArrayList<thing> myList = new ArrayList<thing>;
thing first = new thing("Star Wars", 3);
thing second = new thing("Star Wars", 1);
myList.add(first);
myList.add(second);
Run Code Online (Sandbox Code Playgroud)
我想包含某种逻辑,以便在这种情况下......当我们尝试添加对象"second"而不是向arrayList添加新对象时,我们将second.getNum()添加到first.getNum().因此,如果您要遍历ArrayList,那么它就是
"Star Wars", 4
Run Code Online (Sandbox Code Playgroud)
我无法想出一个处理这个问题的优雅方法.随着arraylist的增长,搜索它以确定是否存在重复的名称项变得麻烦.任何人都可以提供一些指导吗?
只想检查数据是否已存在于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);
}
}
Run Code Online (Sandbox Code Playgroud)
问题:
没有得到任何Toast消息,我用它来表示"数据存在"或"不存在"
最后:
我想将项目添加到arraylist如果已经不存在,否则想要显示Toast该项目已经存在(s)
我有一个ArrayList,它包含一个类的元素Event.Event有两个属性,Name和Timestamp.该列表现在显示所有事件.我想删除具有相同名称但不同时间戳的重复项,并将它们放在另一个列表中.这样,用户可以单击具有该名称的事件,然后选择日期.
我已经在我的应用程序中覆盖了函数equals(比较名称和时间戳)以及其他一些功能.
我怎么解决这个问题?
想要快速回答如何列出我的列表视图中的所有项目,以便打印列表或共享到记事本应用程序等.也就是说,从列表视图中获取以下信息的变量:"apple","banana" , "橙子".以下是我的列表视图.谢谢
String[] values = new String[] { "apple", "banana", "orange" };
listItems = new ArrayList<String>();
for (int i = 0; i < values.length; ++i) {
listItems.add(values[i]);
}
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1,
listItems);
// Assign adapter to ListView
listView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)