自己写两个判断字符串数组是否相等或数组内容是否相同,大家看下怎么改进下...

在项目中经常用到判断两个数组经常相等,或者是判断数组内容是否相同(即排序后再判断是否相等)。想封装个方法方便日后使用。自己在这写了下,技术有限。大家看看还有什么地方可以改进,大家共同进步,呵呵。

 

代码如下

 

package test;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;


public class Tool {
    /**
     * 判断两个数组是否相等
    *
    *@param a
    *@param b
    *@return
     */
    public  boolean arrayIsEqual(String[] a, String[] b) {
        if(a!=null&&b!=null){
            if (a.length != b.length) {
                return false;
            } else {
                for (int i = 0; i < a.length; i++) {
                    if(a[i]==null){
                        if(b[i]!=null){
                            return false;
                        }
                    }else{
                        if (!a[i].equals(b[i])) {
                            return false;
                        }
                    }
                }
            }
            return true;
        }else {
            if(a==null&&b==null){
                return true;
            }else{
                return false;
            }
            
        }
    }
    /**
     * 判断两个数组内容是否相同
    *
    *@param a
    *@param b
    *@return
     */
    public  boolean arraySortedIsEqual(String[] a, String[] b) {
        if(a!=null&&b!=null){
            List<String> tmpA=Arrays.asList(a);
            List<String> tmpB=Arrays.asList(b);
            Collections.sort(tmpA, new ComparatorString());
            Collections.sort(tmpB, new ComparatorString());
            return this.arrayIsEqual(tmpA.toArray(new String[tmpA.size()]), tmpB.toArray(new String[tmpB.size()]));
        }else if(a==null&&b==null){
            return true;
        }else{
            return false;
        }
        
    }
    
    class ComparatorString implements Comparator<Object>{

        @Override
        public int compare(Object o1, Object o2) {
            if(o1==null&&o2==null){
                return 0;
            }else if(o1!=null&&o2!=null){
                String s1=(String)o1;;
                String s2=(String)o2;
                if(s1.compareTo(s2)>0){
                    return 1;
                }else{
                    return 0;
                }
            }else{
                if(o1==null){
                    return 0;
                }else{
                    return 1;
                }
            }
            
        }
    }
    public static void main(String[] args) {
        Tool tool= new Tool();
        String[] a = { "111", null, "444", "333" };

        String[] b = { "111",  "444", "333" ,null};

        String[] c = { "111", "222", "444", "333" };

        System.out.println(tool.arrayIsEqual(a, b));

        System.out.println(tool.arrayIsEqual(a, c));
        System.out.println(tool.arraySortedIsEqual(a, b));
    }
}

 

 

希望大家能提修改意见。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值