我有一个ArrayList,她的内容来自用户... 我希望用户无法将相同的内容放两次。 我该怎么办?
addArray.add(firstHouer + " " + firstdMinute + " - " + seccoundHouer + " " + seccoundMinute);
adapter.notifyDataSetChanged();
谢谢!
答案 0 :(得分:4)
您可以通过contains
方法进行检查:
if (!addArray.contains(...)) {
addArray.add();
}
或仅使用HashSet<String>
,它将自动处理重复的元素。保证同一元素最多出现一次。
答案 1 :(得分:1)
如果要检查MyObject上的重复项,可以使用在MyObject中编写方法getKey():String,并使用HashSet检查dup键。
您的示例:
public class MainActivity extends AppCompatActivity {
ArrayList<MyObject> items = new ArrayList<>();
HashSet<String> checkDup = new HashSet<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addObject(new MyObject(1, 30));
addObject(new MyObject(2, 30));
addObject(new MyObject(1, 30)); // dup content will be skip
addObject(new MyObject(5, 0));
for (MyObject item : items) {
Log.d("hiepxuan2008", item.hour + " - " + item.minute);
}
}
void addObject(MyObject obj) {
if (!checkDup.contains(obj.getKey())) {
checkDup.add(obj.getKey());
items.add(obj);
}
}
// Your custom Object
class MyObject {
public int hour;
public int minute;
public MyObject(int hour, int minute) {
this.hour = hour;
this.minute = minute;
}
public String getKey() {
return hour + "-" + minute;
}
}
}
结果:
1-30
2-30
5-0
希望对您的问题有所帮助。谢谢!