List 比较

小斯AN 2018-08-03 03:54:58
有10个list 如何实现这个10个list两两比较,然后将元素想的的分成一组
...全文
497 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZLY_Smile 2018-08-20
  • 打赏
  • 举报
回复
循环时,用size小的那个,不然无法完全比较,反之else
ZLY_Smile 2018-08-20
  • 打赏
  • 举报
回复
俩俩相比,然后获取重复的数据。
public static <T> Map<String, List<T>> listContrast(List<T> list1, List<T> list2){
HashMap<String, List<T>> map = new HashMap<String, List<T>>();
List<T> list = new ArrayList<T>();
int i = 0;
if(list1.size() >= list2.size()){ //当list1大于list2遍历list2
for (T t : list2) { //循环list2
if(list1.contains(t)){
list.add(t); //当list1中包含list2中其中一个元素,添加到list中
i++;
}
}
}else{ //和if相同,list1和list2互换
for (T t : list1) {
if(list2.contains(t)){
list.add(t);
i++;
}
}
}
/**删除list1、2中包含list的元素**/
list2.removeAll(list);
list1.removeAll(list);

map.put("list1", list1);
map.put("list2", list2);
map.put("sameList", list);
return map;
}
Braska 2018-08-20
  • 打赏
  • 举报
回复
public static void main(String[] args) throws InterruptedException {
List<Integer> list1 = Arrays.asList(1,2,3,4,5);
List<Integer> list2 = Arrays.asList(6,2,8,4,9);
List<Integer> list3 = Arrays.asList(0,5,7,8,5);
List<Integer> list4 = Arrays.asList(1,0,6,4,2);

List<Integer> finalList = Lists.newArrayListWithExpectedSize(20);
finalList.addAll(list1);
finalList.addAll(list2);
finalList.addAll(list3);
finalList.addAll(list4);

Map<Integer, List<Integer>> result = finalList.stream().collect(Collectors.groupingBy(i -> i));
for (Map.Entry<Integer, List<Integer>> entry : result.entrySet()) {
System.out.println(entry.getValue());
}
}
whyuf_go 2018-08-20
  • 打赏
  • 举报
回复
引用 6 楼 qq_41054313 的回复:
如果是完全相等的两个数组的话 直接用 list1.equals( list2 ); 就可以了啊

至于分组的话


补全一下6楼的写法,其实大致就是这个样子的. 如果是判断是否为同一个List 直接使用 == 就行了.代码如下
List list1 = new ArrayList();
list1.add("1");
List list2 = new ArrayList();
list2.add("2");
List list3 = new ArrayList();
list3.add("3");
List list4 = new ArrayList();
list4.add("3");
List list5 = new ArrayList();
list5.add("4");
List list6 = new ArrayList();
list6.add("1");
List list7 = new ArrayList();
list7.add("5");

//用来存放未处理的list集合
List<List<String>> oldList = new ArrayList<List<String>>();
oldList.add(0,list1);
oldList.add(1,list2);
oldList.add(2,list3);
oldList.add(3,list4);
oldList.add(4,list5);
oldList.add(5,list6);
oldList.add(6,list7);

//用来存放分组后的集合
List<List<List<String>>> newList = new ArrayList<List<List<String>>>();

//拿出未处理的list中的,每一个元素与处理后的list中的每一个分组中的第一个元素作比较
//modelList 处理过后的数据的分组
List<List<String>> modelList = new ArrayList<List<String>>();
for(int i=0; i<oldList.size(); i++){
//规定一个开关如果是true 就是有相同的list
boolean flag = false;
//相同的list所在的下标
int index = 0;
//如果是第一次则直接把list放到第一个分组中
if(0 == newList.size()){
modelList.add(oldList.get(i));
newList.add(0,modelList);
continue;
}
int a = newList.size();
for(int j=0; j<a; j++){
//如果只是比较这两个List是否指向同一个List 可以直接使用 == 去判断 oldList.get(i) == newList.get(j).get(0)
if(oldList.get(i).equals(newList.get(j).get(0))){
flag = true;
index = j;
}
}
//根据判断分组
if(flag){
newList.get(index).add(oldList.get(i));
}else{
modelList = new ArrayList<List<String>>();
modelList.add(oldList.get(i));
newList.add(a,modelList);
}
}

//输出展示每个分组的第一个以及每个分组的个数
for(int i=0; i<newList.size(); i++){
System.out.print(newList.get(i).get(0));
System.out.print(" ");
System.out.println(newList.get(i).size());
}
Dan淡淡的心 2018-08-18
  • 打赏
  • 举报
回复
如果是完全相等的两个数组的话 直接用 list1.equals( list2 ); 就可以了啊 至于分组的话
net学习期 2018-08-17
  • 打赏
  • 举报
回复
list是集合类
yuji_tt 2018-08-05
  • 打赏
  • 举报
回复
用两个for循环就可以了啊
linfeng 2018-08-04
  • 打赏
  • 举报
回复
是像的,还是相等的,如果是相等,可以把list序列化后生成MD5再比较,要么用笨方法一个一个比
氵灏 2018-08-03
  • 打赏
  • 举报
回复
List l1 = Arrays.asList(new String[]{"1","232","345"});
List l2 = Arrays.asList(new String[]{"1","345","232"});
List l3 = Arrays.asList(new String[]{"1","2","345"});
List<List<T>> list = new ArrayList<List<T>>();
list.add(l1);
list.add(l2);
list.add(l3);
for(int i= 0;i<list.size();i++){
for(int j= i+1;j<list.size();j++){
Sysout(list.get(i).toString());
Sysout(list.get(j).toString());
比较两个list集,相等的放一个里

}
}
大概这意思,我就能想到循环这种这笨办法,等大神来答吧

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧