【问题标题】:whether 2 arraylist is equal or not2 arraylist 是否相等
【发布时间】:2020-02-16 18:04:50
【问题描述】:
public boolean isSymmetric(TreeNode A) {
        if(A==null)
            return true;
     /*   if(isSymmetric(A.left) && isSymmetric(A.right))
            return 1;
        else return 0;*/
        ArrayList<Integer> al1= preorder(A);
        System.out.println(al1);
        al.clear(); 
        //System.out.println("common "+al);
        p=invertTree(A);
        ArrayList<Integer> al2= preorder(p);
        System.out.println(al2);
        int i=0,j=0;
        while(i<al1.size() && i<al2.size())
        {
            System.out.println(al1.get(i)+" "+al2.get(i));
            if(al1.get(i)!=al2.get(i))
                    return false;
            i++;
        }
        return true;
    }

我正在尝试比较 2 个数组列表是否具有相同序列中的相同元素

您的意见

[1,2,2,null,3,null,3]

标准输出

[1, 2, -1, 3, -1, -1, 2, -1, 3, -1, -1] //打印al1

[1, 2, 3, -1, -1, -1, 2, 3, -1, -1, -1] //打印al2

1 1 2 2 3 3

-1 -1

-1 -1

-1 -1 2 2 3 3

-1 -1

-1 -1

-1 -1

//不知道它们如何显示相同的元素 输出 真的

预期 假的

【问题讨论】:

  • 您可以对两者进行排序,然后在两者上使用 contains。这可能是一种解决方案
  • 我正在尝试检查树是否是对称的...为此,我对树进行了预排序,然后将其倒置并再次进行预排序,现在我正在检查两者是否相同,即顺序然后这棵树是对称的............因为它是同一棵树,这就是为什么大小相同并且我无法对其进行排序,因为它会改变解决我的问题所需的顺序跨度>

标签: arraylist equality


【解决方案1】:

假设您有 al1 和 al2 ArrayList。这就是你如何检查它们是否相等(所有位置的大小和值都相同)

boolean same = true;
if ((al1 == null) != (al2 == null)) {
    same = false;
} 
if (al1.size() != al2.size()) {
    same = false;
} else {
    for (int i = 0; same && (same = al1.get(i).equals(al2.get(i)); i++);
    //The result is in same
}

【讨论】:

  • 这样做... boolean same=true; for ( i = 0; (i
  • @gotu 根据您的问题,您希望输出为假,但这是真的。在你的这个评论中,你说输出是真的,你期望它是假的。我们需要澄清这一点。 1, 2 和 2, 1 一样吗? 1、2、3和1、2一样吗?我试图找出您的期望,因为您在这里的评论似乎与问题中定义的期望相矛盾。我假设您要确定所有位置上的所有元素是否相同,因此 1, 2 不等于 2, 1。
  • 我的 al1 和 al2 打印正确,但是当我尝试比较它们时,它们在相同的索引处显示相同的元素...为什么这样做以及如何解决它
  • @gotu gow 你的预购方式是怎样的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2010-11-16
  • 2015-07-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2017-06-26
相关资源
最近更新 更多