比较两个不同的arraylist(JAVA)中的字符串

时间:2012-11-03 08:57:15

标签: java string arraylist compare

这是我的代码的一部分:

  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 looop时,我有一些bug。

结果是:

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

我想只打印在示例中它们是gsm和pc

的2
not equals..:gsm
not equals..:pc

10 个答案:

答案 0 :(得分:8)

请勿使用!=来比较字符串。使用equals方法:

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

答案 1 :(得分:1)

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

答案 2 :(得分: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

答案 3 :(得分:0)

现在你将每个元素与所有其他元素进行比较。做点什么

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

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

答案 4 :(得分:0)

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

import org.apache.commons.collections.CollectionUtils;

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

Collection intersection = CollectionUtils.intersection(listA, listB);

答案 5 :(得分: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实例中,最后它只包含不相等的列表。

答案 6 :(得分: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;
}

答案 7 :(得分:0)

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

答案 8 :(得分:0)

我们可以如下比较arrayListjava中两个不同大小的Android

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

答案 9 :(得分:-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"));
    }

}