检查ArrayList <string>是否已经有该项目

时间:2018-08-12 12:29:10

标签: java android arrays string

我有一个ArrayList,她的内容来自用户... 我希望用户无法将相同的内容放两次。 我该怎么办?

addArray.add(firstHouer + " " + firstdMinute + " - " + seccoundHouer + " " + seccoundMinute);
adapter.notifyDataSetChanged();

谢谢!

2 个答案:

答案 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

希望对您的问题有所帮助。谢谢!