鍍金池/ 問答/Java/ java for循環(huán),有兩個集合,第一個集合全部的子元素都要和第二個集合的子元素

java for循環(huán),有兩個集合,第一個集合全部的子元素都要和第二個集合的子元素進行單個對比。換成語句怎么寫,求指點。

java for循環(huán),有兩個集合,第一個集合全部的子元素都要和第二個集合的子元素進行單個對比。換成語法怎么寫。求大神指點,

問題模型:
list1=[1,2,3,4,5,6];
list2=[3,5,6]
list1,list2均為變量。這里只是隨便取幾個數(shù)字進行示意。
循環(huán)圖示意: 以此類推

clipboard.png

每個List1的對象在循環(huán)和list2對象對比的時候,if判斷,如果相同則發(fā)生什么操作,不相同則繼續(xù)循環(huán)

回答
編輯回答
擱淺

謝邀

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

2017年1月19日 20:02