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

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

 

代码如下

 

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

 

 

希望大家能提修改意见。 

 

 

判断两个字符串数组是否相等,可以有多种方法。引用\[1\]和引用\[2\]提供了两种不同的解决方案。引用\[1\]中的解决方案使用了两个指针来遍历两个字符串数组,并逐个比较字符是否相等。如果有任何一个字符不相等,则返回false。如果循环结束后没有出错,则比较字符串数组组成的字符串总长度是否相等,如果相等则返回true,否则返回false。引用\[2\]中的解决方案则是将两个字符串数组拼接成两个字符串,然后直接比较这两个字符串是否相等。如果相等则返回true,否则返回false。引用\[3\]中的解决方案也是将两个字符串数组拼接成两个字符串,然后直接比较这两个字符串是否相等。如果相等则返回true,否则返回false。所以,根据这些解决方案,可以判断两个字符串数组是否相等。 #### 引用[.reference_title] - *1* *2* *5* [1662. 检查两个字符串数组是否相等](https://blog.csdn.net/m0_62008860/article/details/127636460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* *4* [检查两个字符串数组是否相等](https://blog.csdn.net/qq_36400210/article/details/110048603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值