我正在尝试打印两个列表之间的公共元素,并且当我尝试使用 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 输出的末尾停止。
1 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
你有 UnsupportedOperationException。由于retainAll
resize 集合,而Arrays.asList()
返回不可调整大小的集合。
将dblist
初始化替换为new ArrayList(Arrays.asList(db))
但我不建议在retainAll
方法中使用 List 作为参数,这将是 O(N^2) 复杂度。用于如果元素HashSet
的medlist
顺序无关紧要。
添加回答
举报
0/150
提交
取消