java list定义int_java的list的并交查集操作

废话不多说,直接上

1、定义一个Person类:

public class Person {

String name;

int age;

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + "]";

}

}

2、测试类

一、定义两个list,分别为list1、list2,为他们添加上几个Person对象:

ArrayList list1 = new ArrayList();

ArrayList list2 = new ArrayList();

Person p1 = new Person("xz", 20);

Person p2 = new Person("erge", 18);

Person p3 = new Person("ermeng", 19);

Person p4 = new Person("yy", 25);

list1.add(p1);

list1.add(p2);

list1.add(p3);

list2.add(p2);

list2.add(p3);

list2.add(p4);

直观显示如下:

二、交集:

list3.retainAll(list4);

// 交集(A∩B)

ArrayList list3 = (ArrayList) list1.clone();

ArrayList list4 = (ArrayList) list2.clone();

list3.retainAll(list4);

System.out.println("交集如下");

for (int i = 0; i < list3.size(); i++) {

System.out.println(list3.get(i));

}

输出如下:

注:这边如果用ArrayList list3 = list1;直接复制不行,这时候list3和list1是指向同一个内存地址,操作了list3相当于也操作了list1,会影响到后面并集和差集的结果。用clone能解决这个问题!后面的也都是用克隆。

三、无重复并集:

list6.removeAll(list5);

list5.addAll(list6);

// 无重复并

ArrayList list5 = (ArrayList) list1.clone();

ArrayList list6 = (ArrayList) list2.clone();

list6.removeAll(list5);

list5.addAll(list6);

System.out.println("无重复并集如下");

for (int i = 0; i < list5.size(); i++) {

System.out.println(list5.get(i));

}

输出如下:

.

四、可重复并集:

list7.addAll(list8);

// 可重复并集

ArrayList list7 = (ArrayList) list1.clone();

ArrayList list8 = (ArrayList) list2.clone();

list7.addAll(list8);

System.out.println("可重复并集如下");

for (int i = 0; i < list7.size(); i++) {

System.out.println(list7.get(i));

}

输出如下:

五、差集(A-B)

list9.removeAll(list10);

// 差集第一种(A-B)

ArrayList list9 = (ArrayList) list1.clone();

ArrayList list10 = (ArrayList) list2.clone();

list9.removeAll(list10);

System.out.println("差集第一种(A-B)如下");

for (int i = 0; i < list9.size(); i++) {

System.out.println(list9.get(i));

}

输出如下:

六、差集(B-A)

list12.removeAll(list11);

// 差集第二种(B-A)

ArrayList list11 = (ArrayList) list1.clone();

ArrayList list12 = (ArrayList) list2.clone();

list12.removeAll(list11);

System.out.println("差集第一种(A-B)如下");

for (int i = 0; i < list12.size(); i++) {

System.out.println(list12.get(i));

}

输出如下:

所有代码如下:

Person.java

public class Person {

String name;

int age;

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person [name=" + name + ", age=" + age + "]";

}

}

MainTest.java

import java.util.ArrayList;

public class MainTest {

public static void main(String[] args) {

ArrayList list1 = new ArrayList();

ArrayList list2 = new ArrayList();

Person p1 = new Person("xz", 20);

Person p2 = new Person("erge", 18);

Person p3 = new Person("ermeng", 19);

Person p4 = new Person("yy", 25);

list1.add(p1);

list1.add(p2);

list1.add(p3);

list2.add(p2);

list2.add(p3);

list2.add(p4);

// 交集(A∩B)

ArrayList list3 = (ArrayList) list1.clone();

ArrayList list4 = (ArrayList) list2.clone();

list3.retainAll(list4);

System.out.println("交集如下");

for (int i = 0; i < list3.size(); i++) {

System.out.println(list3.get(i));

}

// 无重复并

ArrayList list5 = (ArrayList) list1.clone();

ArrayList list6 = (ArrayList) list2.clone();

list6.removeAll(list5);

list5.addAll(list6);

System.out.println("无重复并集如下");

for (int i = 0; i < list5.size(); i++) {

System.out.println(list5.get(i));

}

// 可重复并集

ArrayList list7 = (ArrayList) list1.clone();

ArrayList list8 = (ArrayList) list2.clone();

list7.addAll(list8);

System.out.println("可重复并集如下");

for (int i = 0; i < list7.size(); i++) {

System.out.println(list7.get(i));

}

// 差集第一种(A-B)

ArrayList list9 = (ArrayList) list1.clone();

ArrayList list10 = (ArrayList) list2.clone();

list9.removeAll(list10);

System.out.println("差集第一种(A-B)如下");

for (int i = 0; i < list9.size(); i++) {

System.out.println(list9.get(i));

}

// 差集第二种(B-A)

ArrayList list11 = (ArrayList) list1.clone();

ArrayList list12 = (ArrayList) list2.clone();

list12.removeAll(list11);

System.out.println("差集第一种(A-B)如下");

for (int i = 0; i < list12.size(); i++) {

System.out.println(list12.get(i));

}

}

}

7a7aff3ffe8c

image.png

作者本人一开始写成了:

7a7aff3ffe8c

image.png

发现并没有做差集,最后发现list的类型不同

改为:

7a7aff3ffe8c

image.png

就ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值