public static void main(String[] args) {
//第一种:List每remove掉一个元素以后,
//后面的元素都会向前移动,此时如果执行i=i+1,
//则刚刚移过来的元素没有被读取。
String str1 = new String("abcde1");
String str2 = new String("abcde2");
String str3 = new String("abcde3");
String str4 = new String("abcde4");
String str5 = new String("abcde5");
List list = new ArrayList();
list.add(str1);
list.add(str2);
list.add(str3);
list.add(str4);
list.add(str5);
System.out.println("list.size()=" + list.size());
//每移除一个元素以后再把i移回来
for (int i = 0; i < list.size(); i++) {
if(((String) list.get(i)).contains("abcde1")) {
list.remove(i);
i--;
}
}
System.out.println("after remove:list.size()=" + list.size());
//第二种:定义一个空的Set,把两个list中的元素依次往这个set中存放,
//Set中的元素是不重复的
ArrayList<String> l1 = new ArrayList<String>();
ArrayList<String> l2 = new ArrayList<String>();
l1.add("1");
l1.add("2");
l1.add("3");
l1.add("4");
l1.add("5");
l2.add("3");
l2.add("4");
l2.add("5");
l2.add("6");
l2.add("7");
/*l1.add(1);
l1.add(2);
l1.add(3);
l1.add(4);
l2.add(3);
l2.add(4);
l2.add(5);
l2.add(6);*/
Set set = new HashSet();
for (String i : l1){
set.add(i);
}
for(String i : l2){
set.add(i);
}
ArrayList<String> l3 = new ArrayList<String>(set);
Collections.sort(l3); //这里排序
System.out.println(l3);
//第三种:
List <String> temp=new ArrayList<String>(l1);//用来保存两者共同有的数据
temp.retainAll(l2);
l1.removeAll(temp);//l1中去掉两者共同有的数据
l2.removeAll(temp);//l2中去掉两者共同有的数据
List <String> l5=new ArrayList<String>();
l5.addAll(l1);
l5.addAll(l2);
System.out.println(l5);
//第四种:用SET
Set s = new HashSet(l1);//将1放到Set中
for(String i : l2){
//l2添加到set中不成功的时 ,说明s中已经存在该对象,直接remove掉该对象即可
if(!s.add(i)){
s.remove(i);
}
}
System.out.println(s);
}