!arraylist.contains()不工作?

时间:2016-05-26 00:48:32

标签: java arraylist conditional contains

基本上我需要按照特定的顺序将字符串从一个arraylist添加到另一个arraylist。 第一个项目包含收藏夹,然后是第一个收藏夹,然后是第二个。

我一直尝试通过添加第一组(没有问题),然后添加带条件的第二组:originalList [i] .contains(favorite1)&&!secondList.contains(originalListNames) [I])

但我一直在重复。然后我尝试了下面的代码,我仍然得到重复。它们以正确的顺序添加,并且应该添加所有应该添加的内容。但是他们真的不应该重复,但是他们确实......在这里有什么帮助我到底搞砸了什么?

    ArrayList<String> dataSource = new ArrayList<>();
    for (int i=0; i < names.length; i++) {
        if (categories[i].toLowerCase().contains(favorite1)) {
            if (categories[i].toLowerCase().contains(favorite2)) {
                dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]);
            }
        }
    }

    for (int i=0; i < names.length; i++) {
        if (categories[i].toLowerCase().contains(favorite1)) {
            if (dataSource.contains(names[i])) {
            }
            else{
                dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]);
            }
        }
    }

请注意,dataSource是目标,名称,日期,描述等是包含所有对应于同一索引的字符串的数组。 (即,名称[i],日期[i]等都包含相同的内容

1 个答案:

答案 0 :(得分:0)

所以终于明白了....感谢你的帮助。在我的java上有点生锈,但是最终的结果(尽管它可能是非优化的......):

    for (int i=0; i < names.length; i++) {
        if (categories[i].toLowerCase().contains(favorite1)) {
            boolean found=false;
            for (int j=0; j < dataSource.size(); j++){
                if (dataSource.get(j).toString().indexOf(names[i]) >= 0) {
                    found = true;
                }
            }
            if (!found){
                dataSource.add(names[i] + "," + dates[i] + "," + descriptions[i] + "," + categories[i] + "," + imgurl[i]);
            }
        }
    }