亲爱的所有我在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");
}
答案 0 :(得分:3)
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 指定的集合。