比较android </string>中的两个List <string>值

时间:2013-06-12 07:56:33

标签: android string list equals

亲爱的所有我在android中比较两个List如果两个值都相同并且它返回true即可,但我想知道列表字符串之间有多少值是正确的,如果它不匹配如何实现此帮助非常感谢。以下是我的代码。

            List<String> list1 = new ArrayList<String>(i1.values());
            ///list 1 = [-ful; to be full of; play; playful; full of play]
    List<String> acct_Rte_Cdes_A = Arrays.asList(result) ;
            ///acct_Rte_Cdes_A  = [-ful; to be full of; play; playful; full of play]
             if (list1.equals(acct_Rte_Cdes_A)) { 
                // do what you want to do if the string is there
                //System.out.println("True");
     }  else {
        System.out.println("False");
         }

5 个答案:

答案 0 :(得分:3)

使用Collection#retainAll()。喜欢

List<Integer> common = new ArrayList<Integer>(listA);
common.retainAll(listB);
// common now contains only the elements which are contained in listA and listB.

因此,如果大于0,则可以检查大小,这意味着某些元素很常见。哪些是常见元素common会告诉我们。

答案 1 :(得分:1)

您可以自己遍历列表并检查是否相等,同时保留一个计数器以指示它们的位置不同。

示例(伪)代码:

//if equal return 0, else position of difference
//keep in mind that item at index [0] is first, so return would be 1 if lists differ there
public int checkEquality(List list1, List list2) {
    for (int i = 0; i < list1.size(); ++i) {
        if (list1[i] != list2[i])
             return i + 1;
    }
    return 0;
}

另外请记住,您必须检查列表是否具有相同的大小,并决定如果不是这样做(例如,返回-1表示这一点)。

答案 2 :(得分:1)

int correctCount=0, incorrectCount = 0;
List<String> list1 = new ArrayList<String>(i1.values());

List<String> acct_Rte_Cdes_A = Arrays.asList(result)    

for(String tmp1: list1) {
    for(String tmp2: list2) {
        if(tmp1.compareTo(tmp2) == 0) {
            correctCount++;
        } else {
            incorrectCount++;
        }
    }
}

它的时间复杂度很高,但它可以解决问题。

答案 3 :(得分:1)

您可以在Java集合上使用containsAll方法。这是一个例子。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MainClass {

  public static void main(String[] a) {
    String elements[] = { "A", "B", "C", "D", "E" };
    List<String> list = new ArrayList<String>(Arrays.asList(elements));

    elements = new String[] { "A", "B", "C" };
    List<String> list2 = new ArrayList<String>(Arrays.asList(elements));

    System.out.println(list.containsAll(list2)); // true
    System.out.println(list2.containsAll(list)); // false
  }
}

否则,您可以使用 apache CollectionUtils库来提高性能。根据提供的Collection类型,此方法将比调用Collection.containsAll(Collection)快得多。 请参阅apache containsAll here的文档。

答案 4 :(得分:0)

list1.containsAll(acct_Rte_Cdes_A)

boolean containsAll(Collection<?> c)
  

如果此列表包含该列表的所有元素,则返回true   指定的集合。