java - 列出 Java 中的常见元素

标签 java list

我正在尝试打印两个列表之间的公共(public)元素,并且当我尝试使用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 输出的末尾停止。

最佳答案

您遇到了 UnsupportedOperationException。 因为 retainAll 会调整集合的大小,而 Arrays.asList() 返回不可调整大小的集合。

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

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

关于java - 列出 Java 中的常见元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54755670/

相关文章:

python - 如何在Python中将int打印为单词seq

python - 从numpy数组中随机选择一段数字

java - 将 URL 转换为普通的 windows 文件名 Java

java - 在循环中等待 Action 监听器执行

java - Maven 中未使用/未声明的依赖项是什么?该怎么办?

python - 更改列表项而不更改原始值

list - 如何将元组添加到 List 并避免 java.lang.UnsupportedOperationException

python - 交替排序字符串列表

java - 有没有比 findViewById() 更好的方法将 XML 元素与 Android 中的 java 类链接起来

java - 扩展线程时不能强制简单的 'race condition',只有在使用 ExecutorService 时