3

这是我的代码的一部分:

  ArrayList<String> Alist= new ArrayList<String>();
  ArrayList<String> Blist= new ArrayList<String>(); 

  Alist.add("gsm");
  Alist.add("tablet");
  Alist.add("pc");
  Alist.add("mouse");

  Blist.add("gsm");
  Blist.add("something");
  Blist.add("pc");
  Blist.add("something");

所以我有两个数组列表,我想比较所有项目并检查它们是否不相等,以及它们是否只打印不相等的项目

所以我做了这样的事情:

http://postimage.org/image/adxix2i13/ 对图片感到抱歉,但是当我在此处发布 for 循环时出现某种错误。

结果是:

not equals..:tablet
not equals..:pc
not equals..:mouse
not equals..:gsm
not equals..:tablet
not equals..:pc
not equals..:mouse
not equals..:gsm
not equals..:tablet
not equals..:pc
not equals..:mouse
not equals..:gsm
not equals..:tablet

我只想打印示例中不相等的 2 个,它们是 gsm 和 pc

not equals..:gsm
not equals..:pc
4

10 回答 10

10

不要!=用来比较字符串。使用等号方法:

if (! Blist.get(i).equals(Alist.get(j))

但这可能无法解决您的算法问题(根本不清楚)。

如果您想要知道哪些项目在同一位置是相同的,您可以使用一个简单的循环:

int sizeOfTheShortestList = Math.min(Alist.size(), Blist.size());
for (int i=0; i<sizeOfTheShortestList; i++) {
    if (Blist.get(i).equals(Alist.get(i))) {
        System.out.println("Equals..: " + Blist.get(i));
    }
}

如果要获取两个列表中的项目,请使用

for (int i = 0; i < Alist.size(); i++) {
    if (Blist.contains(Alist.get(i))) {
        System.out.println("Equals..: " + Alist.get(i));
    }
}
于 2012-11-03T09:01:42.730 回答
1

RemoveAll(Collection c)如果您碰巧知道一个列表是否总是包含所有列表,则可以在其中一个列表上使用。

于 2012-11-03T09:00:49.330 回答
0

您可以使用以下代码:

    ArrayList<String> Alist = new ArrayList<String>();
    ArrayList<String> Blist = new ArrayList<String>();

    Alist.add("gsm");
    Alist.add("tablet");
    Alist.add("pc");
    Alist.add("mouse");

    Blist.add("gsm");
    Blist.add("something");
    Blist.add("pc");
    Blist.add("something");
    for (String a : Alist)
    {
        for (String b : Blist)
        {
            if (a.equals(b))
            {
                System.out.println("Equals " + a);
                break;
            }
        }
    }

输出为:
等于 gsm
等于 pc

于 2012-11-03T09:06:04.787 回答
0

现在您将每个元素与所有其他元素进行比较。做类似的事情

for (int i = 0; i < Alist.size(); i++) {
    if (!Alist.get(i).equals(Blist.get(i)) {
        // print what you want
    }
}

那当然是假设两个列表的长度相同。

于 2012-11-03T09:06:46.147 回答
0

与其编写代码来手动比较列表元素,不如考虑使用Apache Commons Collections

import org.apache.commons.collections.CollectionUtils;

List listA = ...;
List listB = ...;

Collection intersection = CollectionUtils.intersection(listA, listB);
于 2012-11-03T09:22:43.210 回答
0
import java.util.HashSet;

public class CheckSet<T> extends HashSet<T>{

    @Override
    public boolean add(T e) {
        if (contains(e)) {
            remove(e);
            return true;
        } else {
            return super.add(e);
        }
    }   
}

将两个列表的所有元素添加到一个CheckSet实例中,最后它只会包含不相等的元素。

于 2012-11-03T09:35:40.810 回答
0

这是一种方法:

    public static boolean compare(List<String> first, List<String> second) {
    if (first==null && second==null) return true;
    if (first!=null && second==null) return false;
    if (first==null && second!=null) return false;

    if ( first.size()!=second.size() ) return false;

    HashMap<String, String> map = new HashMap<String, String>();
    for (String str : first) {
        map.put(str, str);
    }
    for (String str : second) {
        if ( ! map.containsKey(str) ) {
            return false;
        }
    }
    return true;
}
于 2013-04-09T01:56:41.823 回答
0

公共静态 void main(String args[]) 抛出异常 {

     List<String> arrayList1 = new ArrayList<String>();
     arrayList1.add("a");
     arrayList1.add("b");
     arrayList1.add("c");
     arrayList1.add("d");

     List<String> arrayList2 = new ArrayList<String>();
     arrayList2.add("a");
     arrayList2.add("b");
     arrayList2.add("c");
     arrayList2.add("d");

     boolean isEqual = false;
     if(arrayList1.size() == arrayList2.size()){
        List<String> arrayListTemp = new ArrayList<String>();
        arrayListTemp.addAll(arrayList1);
        arrayListTemp.addAll(arrayList2);
        HashSet<Object> hashSet = new HashSet<Object>();
        hashSet.addAll(arrayListTemp);
        if(hashSet.size() == arrayList1.size() &&
            hashSet.size() == arrayList2.size()){
            isEqual = true;
        }
     }
     System.out.println(isEqual);
 }
于 2016-02-18T10:21:10.100 回答
0

我们可以比较两种不同arrayList的尺寸javaAndroid如下。

ArrayList<String> array1 = new ArrayList<String>();
ArrayList<String> array2 = new ArrayList<String>();

array1.add("1");
array1.add("2");
array1.add("3");
array1.add("4");
array1.add("5");
array1.add("6");
array1.add("7");
array1.add("8");

array2.add("1");
array2.add("2");
array2.add("3");
array2.add("4");

 for (int i = 0; i < array1.size(); i++) {
            for (int j=0;j<array2.size();j++) {
                if (array1.get(i) == array2.get(j)) {
                    //if match do the needful
                } else {
                    // if not match
                }
            }
        }
于 2019-06-28T09:03:46.383 回答
-2
import java.util.Arrays;
public class ExampleContains {
    public static boolean EligibleState(String state){
        String[] cities = new String[]{"Washington", "London", "Paris", "NewYork"};
        boolean test = Arrays.asList(cities).contains(state)?true:false;
        return test;
     }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println(EligibleState("London"));
    }

}
于 2014-03-13T11:16:58.980 回答