Java中能取出List里的相同数据;比如{ { 1,2,3,4,5,6},{11,22,33,44,55,6},{12,13,14,15,16,6} };

 我来答
雪飞潇潇
2018-12-07 · TA获得超过6275个赞
知道大有可为答主
回答量:1968
采纳率:91%
帮助的人:918万
展开全部

寻找相同的数据, 可以使用多种方式,下面简单介绍2种

  • 第一种: 循环遍历,然后在把每一个元素,在其他集合里查找, 如果都存在该元素,就把这个元素保存起来

  • 第二种: java8流处理, 原理差不多, 但是语法比较简洁

稍微注意的是list1 = {'A','A','B'}和list2 = {'A','C'} 如果粗糙的求交集,会得到一个交集结果{'A','A'}, 但是如果要严格取交集那么结果是一个'A'

解决起来很简单, 创造一个boolean[] b2=new boolean[list2.size]; 该boolean数组用于标记,list2的元素,哪些被使用了,哪些没有被使用.被使用的立刻标记为true .下次不再使用.

简单的参考代码: 可以按照自己的需求进行扩展和完善

import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;


public class Demo1 {
//为了方便, 全部定义成静态属性,方便静态方法内使用
static ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5, 6));
static ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(11, 22, 33, 44, 55, 6));
static ArrayList<Integer> list3 = new ArrayList<Integer>(Arrays.asList(12, 13, 14, 15, 16, 6));

public static void main(String[] args) {
test1();//java8 流处理
test2();//传统遍历循环进行处理
}

//流处理求交集
private static void test1() {
System.out.println("list1,list2,list3的交集是:");
list1.stream().filter(num -> list2.contains(num) && list3.contains(num)).collect(Collectors.toList()).stream()
.forEach(System.out::println);
}

//循环遍历求交集
private static void test2() {
ArrayList<Integer> result = new ArrayList<Integer>();
for (Integer num : list1) {
if (list2.contains(num) && list3.contains(num)) {
result.add(num);
}
}
System.out.println("list1,list2,list3的交集是:");
for (Integer i : result) {
System.out.println(i);
}
}
}
砸锅卖铁攢车车
2018-12-07 · TA获得超过935个赞
知道答主
回答量:971
采纳率:22%
帮助的人:95.1万
展开全部
迭代器和增强for循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
为人爱兮1990
2018-12-07 · TA获得超过219个赞
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:96.7万
展开全部
jdk1.8 stream,然后取交集
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式