黑马程序员技术交流社区
标题:
去除两集合中的相同元素
[打印本页]
作者:
纪艺松
时间:
2012-7-30 09:42
标题:
去除两集合中的相同元素
本帖最后由 纪艺松 于 2012-7-30 13:10 编辑
import java.util.*;
class Person{
private int id;
Person(int id){
this.id = id;
}
boolean equals(Person p){
return this.id == p.id;
}
public String toString(){
return "person"+"("+id+")";
}
}
class ex2 {
public static void main(String[] args){
List<Person> li = new LinkedList<Person>();
List<Person> li1 = new LinkedList<Person>();
for(int i=0; i<10; i++){
li.add(new Person(i));
}
System.out.println("之前完整集合li");
System.out.println(li);
li1 = li.subList(2, 5);
System.out.println("sub集合li1");
System.out.println(li1);
/*
for(Person p : li){
for(Person p1 : li1){
if(p.equals(p1))
li.remove(p);
}
}*/
/*
for(int i=0; i<li.size(); i++){
for(int j=0; j<li1.size(); j++){
if(li.get(i)==li1.get(j))
li.remove(i);
}
}
*/
Iterator<Person> it = li.iterator();
Iterator<Person> it1 = li1.iterator();
while(it.hasNext()){
while(it1.hasNext()){
if(it.next()==it1.next()){
it.remove();
}
}
}
System.out.println("去除后的集合");
System.out.println(li);
}
}
三种好像都不行。。。
作者:
王渠
时间:
2012-7-30 10:01
是可以使用removeAll()方法的,我帮你修改的就用了这个方法
import java.util.*;
class Person {
private int id;
Person(int id) {
this.id = id;
}
boolean equals(Person p) {
return this.id == p.id;
}
public String toString() {
return "person" + "(" + id + ")";
}
}
class ex2 {
public static void main(String[] args) {
List<Person> li = new LinkedList<Person>();
List<Person> li1 = new LinkedList<Person>();
for (int i = 0; i < 10; i++) {
li.add(new Person(i));
}
System.out.println("之前完整集合li");
System.out.println(li);
li1 = li.subList(2, 5);
System.out.println("sub集合li1");
System.out.println(li1);
/*
* for(Person p : li){ for(Person p1 : li1){ if(p.equals(p1))
* li.remove(p); } }
*/
/*
* for(int i=0; i<li.size(); i++){ for(int j=0; j<li1.size(); j++){
* if(li.get(i)==li1.get(j)) li.remove(i); } }
*/
li1.removeAll(li);//修改的地方是这里
System.out.println("去除后的集合");
System.out.println(li);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2