比较两个不同的Arraylist(Java)中的字符串



这是我的代码的一部分:

  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/对不起,这是图像,但是当我在此处发布looop时,我有一些错误。

的结果是:

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个不相等的2个,它们是GSM和PC

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

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

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

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

您可以使用以下代码:

    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

现在您将每个元素与其他所有元素进行比较。做

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

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

而不是编写代码以比较您可能考虑使用Apache Commons Collections的列表元素。

import org.apache.commons.collections.CollectionUtils;
List listA = ...;
List listB = ...;
Collection intersection = CollectionUtils.intersection(listA, listB);
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 Intance中,最后仅包含不相等的。

这是一种方法:

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

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

我们可以在javaAndroid中比较两个不同的 arrayList,如下所示。

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

相关内容

  • 没有找到相关文章

最新更新