有10个list 如何实现这个10个list两两比较,然后将元素想的的分成一组

解决方案 »

  1.   

    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集,相等的放一个里

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

  2.   

    是像的,还是相等的,如果是相等,可以把list序列化后生成MD5再比较,要么用笨方法一个一个比
      

  3.   

    用两个for循环就可以了啊
      

  4.   

    list是集合类
      

  5.   

    如果是完全相等的两个数组的话   直接用 list1.equals( list2 );  就可以了啊 至于分组的话 
      

  6.   

    俩俩相比,然后获取重复的数据。
    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;
    }
      

  7.   

    循环时,用size小的那个,不然无法完全比较,反之else
      

  8.   


    补全一下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());
    }
      

  9.   

    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());
            }
        }