版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pxl20171799/article/details/85223715
注意事项:
- 在自定义类中的成员属性是两个集合
- 在求集合的交集,差集,并集时,会修改成员属性的这两个集合的对象。即,若是求交集,使用的是list1.retainAll(list2)方法,此时,集合1中只剩下与集合2 相同的数据,当再求差集时,就会差生错误
- 消除错误:在每一个方法中都在定义两个集合,然后将成员集合赋值给这两个集合,以免修改原来集合的数据
- 返回类型是集合类型
- 求并集时,因为集合中不能有重复的元素,所以要用set集合
详细代码
自定义类:
package 集合对象;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class JH {
//属性
List<Integer>list1=new ArrayList<Integer>();
List<Integer>list2=new ArrayList<Integer>();
//方法
JH(List<Integer> list1, List<Integer> list2) {
this.list1 = list1;
this.list2 = list2;
}
JH() {}
public List<Integer> getList1() {
return list1;
}
public void setList1(List<Integer> list1) {
this.list1 = list1;
}
public List<Integer> getList2() {
return list2;
}
public void setList2(List<Integer> list2) {
this.list2 = list2;
}
public List<Integer> jiaoji()
{
//求交集,
List<Integer>list3=new ArrayList<Integer>(list1);
List<Integer>list4=new ArrayList<Integer>(list2);
boolean isContains=list3.retainAll(list4);
if(isContains==true)
{
return list3;
}
return list3;
}
public List<Integer>chaji()
{
//求差集
List<Integer>list3=new ArrayList<Integer>(list1);
List<Integer>list4=new ArrayList<Integer>(list2);
boolean isContains=list3.removeAll(list4);
if(isContains ==true)
{
return list3;
}
return list3;
}
public Set<Integer>bingji ()
{
//求并集,所求得的集合中不能有重复的元素
Set<Integer>set1=new HashSet<Integer>(list1);
Set<Integer>set2=new HashSet<Integer>(list2);
set1.addAll(set2);
return set1;
}
}
测试类
package 集合对象;
import java.util.ArrayList;
import java.util.List;
public class JH_main {
public static void main(String[] args) {
List<Integer>list1=new ArrayList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
List<Integer>list2=new ArrayList<Integer>();
list2.add(1);
list2.add(3);
list2.add(5);
list2.add(7);
list2.add(9);
list2.add(11);
JH jh=new JH(list1, list2);
System.out.println("交集为:"+jh.jiaoji());
System.out.println("差集为:"+jh.chaji());
System.out.println("并集为:"+jh.bingji());
}
}