簡體   English   中英

比較兩個不同的arraylist(JAVA)中的字符串

[英]Compare strings in two different 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/對不起圖像,但是當我在這里發布一個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

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

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

不要使用!=來比較字符串。 使用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));
    }
}

如果您碰巧知道一個列表是否始終包含所有列表,則可以在其中一個列表上使用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 ,最后它只包含不相等的那些元素。

這是一種方式:

    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 [])throws Exception {

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

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM