java for循环,有两个集合,第一个集合全部的子元素都要和第二个集合的子元素进行单个对比。换成语句怎么写,求指点。

java for循环,有两个集合,第一个集合全部的子元素都要和第二个集合的子元素进行单个对比。换成语法怎么写。求大神指点,

问题模型:
list1=[1,2,3,4,5,6];
list2=[3,5,6]
list1,list2均为变量。这里只是随便取几个数字进行示意。
循环图示意: 以此类推

clipboard.png

每个List1的对象在循环和list2对象对比的时候,if判断,如果相同则发生什么操作,不相同则继续循环

阅读 3.8k
1 个回答

谢邀

List<Integer> list1 = new ArrayList<Integer>();
        list1.addAll(Arrays.asList(new Integer[]{1,2,3,4,5,6}));
        List<Integer> list2 = new ArrayList<Integer>();
        list2.addAll(Arrays.asList(new Integer[]{3,5,6}));
        for(Integer var2 : list2){
            for(Integer var1 : list1){
                if(var2.equals(var1)){
                    System.out.println("do something");
                }
            }
        }


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;


public class Test {
    
    public static void main(String[] args) throws Exception {

        //对象
        List<Model> list1 = new ArrayList<Model>();
        list1.add(new Model(1,"11"));
        list1.add(new Model(2,"33"));
        list1.add(new Model(3,"33"));
        List<Model> list2 = new ArrayList<Model>();
        list2.add(new Model(1,"11"));
        list2.add(new Model(2,"33"));
        list2.add(new Model(3,"33"));
        for(Model m2 : list2){
            for(Model m1 : list1){
                if(m1.getAttr2().equals(m2.getAttr2())){
                    System.out.println("do something");
                }
            }
        }
        /**可以简单封装下,写一个通用的流程,这里使用Comparator接口**/
        //使用通用的方法 Object
        compareSomething(list1,list2,new Comparator<Model>() {
            @Override
            public int compare(Model o1,Model o2) {
                return o1.getAttr2().compareTo(o2.getAttr2());
            }
        });
        
        
        //使用通用的方法 Integer
        List<Integer> list3 = new ArrayList<Integer>();
        list3.addAll(Arrays.asList(new Integer[]{1,2,3,4,5,6}));
        List<Integer> list4 = new ArrayList<Integer>();
        list4.addAll(Arrays.asList(new Integer[]{3,5,6}));
        compareSomething(list3,list4,new Comparator<Integer>() {
            @Override
            public int compare(Integer o1,Integer o2) {
                return o1.compareTo(o2);
            }
        });
    }
    
    
    public static <T> void compareSomething(List<T> list1,List<T> list2,Comparator<T> compare){
        for(T m2 : list2){
            for(T m1 : list1){
                 if(0 == compare.compare(m1, m2)){
                       System.out.println("do something");
                 }
            }
        }
    }
    
  
}
class Model{
    
    private Integer attr1 = 1;
    
    private String attr2 = UUID.randomUUID().toString();

    public Model(){
        
    }
    
    public Model(Integer attr1,String attr2){
        this.attr1 = attr1;
        this.attr2 = attr2;
    }
    
    public Integer getAttr1() {
        return attr1;
    }

    public void setAttr1(Integer attr1) {
        this.attr1 = attr1;
    }

    public String getAttr2() {
        return attr2;
    }

    public void setAttr2(String attr2) {
        this.attr2 = attr2;
    }
}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏