比较取得两个字符串数组中相同元素和不同元素

思路:
1.首先将两个数组A、B排序(递增)
2.分别从A和B中各取出一元素a,b,对a和b进行比 较:
1) 如果a与b相等,则将a或b存入一指定集合中 相同的
2)如果a小于b,则继续取A的下一元素,再与b比 较
将a的元素放入一个新的集合中,为A与B不同的元素
3) 如果a大于b,则取B的下一个元素,与a进行比较
将b的元素放入一个新的集合中,为B与A不同的元素
3.反复进行步骤2,直到A或B的元素都比较完
4.若两个数组长度不一致,则遍历获取较长数组的未遍历部分,放入其对应集合中,该集合为该数组独自拥有的不同元素的集合
5.将集合存放近map中,返回map

public Map<String,List<String>> getCompareElement(String[] strArr1,String[] strArr2)
    {  
        Map<String,List<String>> map = new HashMap<String, List<String>>(); 
        if(strArr1 == null || strArr2 == null) {  
            return null;  
        }  
        Arrays.sort(strArr1);  
        Arrays.sort(strArr2);  

        List<String> sameList = new ArrayList();  
        List<String> strArr1Def = new ArrayList();  
        List<String> strArr2Def = new ArrayList();  

        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]) ) {  
                    sameList.add(strArr1[k]);  
                        k++;  
                        j++;  
                }  
                continue;  
            } else  if(strArr1[k].compareTo(strArr2[j])<0){  
                strArr1Def.add(strArr1[k]);
                    k++;  
            } else {
                strArr2Def.add(strArr2[j]);
                    j++;  
            }  
        }  


        if(k<strArr1.length && j==strArr2.length){

            for(int i = k;i<strArr1.length ;i++){
                strArr1Def.add(strArr1[i]);
            }

        }

        if(k==strArr1.length && j<strArr2.length){

            for(int i = j;i<strArr2.length ;i++){
                strArr2Def.add(strArr2[i]);
            }

        }

        map.put("sameList", sameList);
        map.put("strArr1Def", strArr1Def);
        map.put("strArr2Def", strArr2Def);
       return map;  
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值