Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有java UTIL的情况下比较两个字符串数组_Java_Arrays_Compare - Fatal编程技术网

如何在没有java UTIL的情况下比较两个字符串数组

如何在没有java UTIL的情况下比较两个字符串数组,java,arrays,compare,Java,Arrays,Compare,检查数组arr1是否包含与arr2相同的元素,其顺序与java中的相同 例如: isTheSame({"1", "2", "3"}, {"1", "2", "3"}) → true isTheSame({"1", "2", "3"}, {"2", "1", "1"}) → false isTheSame({"1", "2", "3"}, {"3", "1", "2"}) → false 到目前为止我有 public boolean isTheSame(String[]

检查数组arr1是否包含与arr2相同的元素,其顺序与java中的相同

例如:

    isTheSame({"1", "2", "3"}, {"1", "2", "3"}) → true
    isTheSame({"1", "2", "3"}, {"2", "1", "1"}) → false
    isTheSame({"1", "2", "3"}, {"3", "1", "2"}) → false
到目前为止我有

public boolean isTheSame(String[] arr1, String[] arr2)
{
   if (arr1.length == arr2.length)
   {
      for (int i = 0; i < arr1.length; i++)
       {
          if (arr1[i] == arr2[i])
          {
            return true;
          }
       }
    }
    return false;  
 }
public boolean是名称(字符串[]arr1,字符串[]arr2)
{
if(arr1.length==arr2.length)
{
for(int i=0;i

问题是它只比较两个数组的第一个元素。

您正在迭代,直到找到匹配项为止。相反,您应该查找不匹配的字符串,并且应该使用
equals
而不是
=

// same as Arrays.equals()
public boolean isTheSame(String[] arr1, String[] arr2) {
    if (arr1.length != arr2.length) return false;
    for (int i = 0; i < arr1.length; i++)
        if (!arr1[i].equals(arr2[i]))
            return false;
    return true;
}
public boolean是名称(字符串[]arr1,字符串[]arr2)
{
if(arr1.length==arr2.length)
{
for(int i=0;i

但是它非常不理想。

是的,它只会比较第一个元素。看看它在做什么:

public boolean isTheSame(String[] arr1, String[] arr2)
{
    if (arr1.length == arr2.length)
    {
         for (int i = 0; i < arr1.length; i++)
          {
             // if the elements are equal ..
             // (NOTE: this will only be true for INTERNED strings!!)
             if (arr1[i] == arr2[i]) // fixed typo
              {
                // .. then STOP LOOKING and RETURN TRUE
                // wait- WHY?
                return true;
              }
          }
          // searched everything- but still RETURN FALSE??
    }
    return false;  
 }
public boolean是名称(字符串[]arr1,字符串[]arr2)
{
if(arr1.length==arr2.length)
{
for(int i=0;i

虽然所提供的示例数据中使用
==
并不是由于字符串插入造成的问题,但总有一天它会对实际数据产生影响。除非需要标识相等,否则不要对对象使用
=

是实际程序中if(arr1[i]==arr2[i]
上的右括号吗?对于初学者,请阅读如何在java中比较字符串,并修复编译时错误(忘记在第二个if条件下关闭括号).可靠的答案。首先看一下库的实现总是值得的。
public boolean isTheSame(String[] arr1, String[] arr2)
{
    if (arr1.length == arr2.length)
    {
         for (int i = 0; i < arr1.length; i++)
          {
             if ((arr1[i] != null && arr2[i] != null && !arr1[i].equals(arr2[i]))
                 || (arr1[i] != null && arr2[i] == null) || 
                 (arr2[i] != null && arr1[i] == null))
              {
                return false;
              }
          }
    } else {
         return false;  
    }
    return true;  
 }
public boolean isTheSame(String[] arr1, String[] arr2)
{
    if (arr1.length == arr2.length)
    {
         for (int i = 0; i < arr1.length; i++)
          {
             // if the elements are equal ..
             // (NOTE: this will only be true for INTERNED strings!!)
             if (arr1[i] == arr2[i]) // fixed typo
              {
                // .. then STOP LOOKING and RETURN TRUE
                // wait- WHY?
                return true;
              }
          }
          // searched everything- but still RETURN FALSE??
    }
    return false;  
 }