找出两个字符串数组中的相同元素

public static List<String> getAllSameElement1(String[] strArr1,String[] strArr2) {  
        if(strArr1 == null || strArr2 == null) {  
            return null;  
        }  
        List<String> strList1 = new ArrayList<String>(Arrays.asList(strArr1)); //----------代码段1  
        List<String>  strList2 = new ArrayList<String>(Arrays.asList(strArr2));  //--------------代码段2  
          
        strList1.retainAll(strList2);  
        return strList1;  
    }  

另一种实现,数组比较大的情况下

    1. 由 于最近看见一文章,是描述数据库mergeJoin 的扫描方式的,仿照里面的大致逻辑自己写了<br> 
    2.     个类似的方法。如果数组大的话,这个要比getAllSameElement1好 
    3.     
    4.          大致思路是:1.首先将两个数组A、B排序(递增)<br> 
    5.                   2.分别从A和B中各取出一元素a,b,对a和b进行比 较:<br> 
    6.                      1) 如果a与b相等,则将a或b存入一指定集合中<br> 
    7.                     2)如果a小于b,则继续取A的下一元素,再与b比 较<br> 
    8.                     3) 如果a大于b,则取B的下一个元素,与a进行比较<br> 
    9.                  3.反复进行步骤2,知道A或B的元素都比较完<br> 
    10.                  4.返回集合(存了相同的元素)<br>
public static List<String> getAllSameElement2(String[] strArr1,String[] strArr2) {  
        if(strArr1 == null || strArr2 == null) {  
            return null;  
        }  
        Arrays.sort(strArr1);  
        Arrays.sort(strArr2);  
          
        List<String> list = new ArrayList<String>();  
          
        int k = 0;  
        int j = 0;  
        while(k<strArr1.length && j<strArr2.length) {  
            if(strArr1[k].compareTo(strArr2[j])==0) {  
                if(strArr1[k].equals(strArr2[j]) ) {  
                    list.add(strArr1[k]);  
                    k++;  
                    j++;  
                }  
                continue;  
            } else  if(strArr1[k].compareTo(strArr2[j])<0){  
                k++;  
            } else {  
                j++;  
            }  
        }  
       return list;  
    } 

来自:http://blog.sina.com.cn/s/blog_76ce6f790100pais.html

原文地址:https://www.cnblogs.com/dingchenghong/p/2517598.html