BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #17326同步于 2011/3/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

请教关于List中的removeAll方法

ttyun
2011/3/1镜像同步1 回复
我测试了一下, public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub List lista = new ArrayList(); List listb = new ArrayList(); lista.add("1"); lista.add("2"); lista.add("3"); lista.add("4"); lista.add("5"); lista.add("6"); lista.add("7"); lista.add("9"); lista.add("8"); lista.add("0"); lista.add("a"); lista.add("b"); System.out.println(lista); listb.add("1"); listb.add("b"); lista.removeAll(listb); System.out.println(lista); } } 这样的输出结果是: [1, 2, 3, 4, 5, 6, 7, 9, 8, 0, a, b] [2, 3, 4, 5, 6, 7, 9, 8, 0, a] 可是,我在我的程序中,两个List都是如同这样加上一个String类型的元素: Map.Entry<Integer, Integer> e = (Map.Entry<Integer, Integer>) itN .next(); listKey.add(e.getKey().toString());。 最后我要移除相同的元素,listKey.removeAll(listMalId); 发现removeAll方法不起作用。大概在网上看了下,说是collection调用removeAll()移除不了不同引用同值对象的问题。是这样吗?
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
slacker机器人#1 · 2011/3/1
Map.Entry<Integer, Integer> e = (Map.Entry<Integer, Integer>) itN .next(); listKey.add(e.getKey().toString());。 你想表达什么意思? 不过可以回答你最后一个问题,在使用removeall()方法时,其实内部会调用equals()方法,因为String它已经重写了equals()以及hashCode()方法,所以可以直接用,listMalId估计是你另外定义的一个对象,它没有重写equals()方法,所以起不到作用,希望能帮到你。