3

亲爱的,如果两个值相同,我正在比较 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");
         }
4

5 回答 5

3

您可以在 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 的文档。

于 2013-06-12T08:13:33.560 回答
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会告诉我们。

于 2013-06-12T08:02:35.730 回答
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++;
        }
    }
}

它的时间复杂度很高,但它会成功。

于 2013-06-12T08:09:47.000 回答
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 表示这一点)。

于 2013-06-12T08:01:21.437 回答
0
list1.containsAll(acct_Rte_Cdes_A)

boolean containsAll(Collection<?> c)

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

于 2013-06-12T08:00:00.263 回答