列出Java中的常见元素

时间:2019-02-18 21:31:40

标签: java list

我正在尝试打印出两个列表之间的公共元素,以及当我尝试使用keepAll()时;它基本上跳过了所有超出的内容。

    List<String> dblist = Arrays.asList(db);
    List<String> medlist = Arrays.asList(medication);

    //Get Meds in Database that Match Patient Meds 
    jTextArea3.append("\nMedications in dblist :"+"\n");
    for (int d =0; d<dblist.size(); d++){
        jTextArea3.append(dblist.get(d)+"\n");
    }       

    jTextArea3.append("\nMedications in medlist :"+"\n");
    for (int d =0; d<medlist.size(); d++){
        jTextArea3.append(medlist.get(d)+"\n");
    }    

    //dblist.retainAll(medlist);
    jTextArea3.append("\nMedications in both :"+"\n");
    for (int d =0; d<dblist.size(); d++){
        jTextArea3.append(dblist.get(d)+"\n");
    } 

这将列出dblist.get(d)的内容,但是一旦我取消注释dblist.retainAll(medlist),输出就会停止在上述medlist输出的末尾。

1 个答案:

答案 0 :(得分:5)

您有UnsupportedOperationException。 由于retainAll调整了大小,而Arrays.asList()返回的则无法调整大小。

dblist代替new ArrayList(Arrays.asList(db))初始化

但是我不建议在retainAll方法中使用List作为参数,这将是O(N ^ 2)复杂性。如果元素的顺序无关紧要,请将HashSet用于medlist