列出 Java 中的常见元素

我正在尝试打印两个列表之间的公共元素,并且当我尝试使用 retainAll(); 它基本上跳过了过去的所有内容。


    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 输出的末尾停止。


白衣染霜花
浏览 64回答 1
1回答

郎朗坤

你有 UnsupportedOperationException。由于retainAllresize 集合,而Arrays.asList()返回不可调整大小的集合。将dblist初始化替换为new ArrayList(Arrays.asList(db))但我不建议在retainAll方法中使用 List 作为参数,这将是 O(N^2) 复杂度。用于如果元素HashSet的medlist顺序无关紧要。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java