我正在尝试比较两个列表。第一个列表具有来自class1开关的值,而另一个列表我正试图从站点(class2)检索它。我正在尝试比较这两个列表,但是if语句返回否。例如 我正在检查大豆开关,当我扫描条形码时,提取的列表中有大豆,但文本未返回。请帮帮我!
这是我编写的代码。 Class1
public ArrayList<String> soy2= new ArrayList<String>();
Switch soy;
.....................
if (soy.isChecked()) {
checked();
}
else {
textView.setText("blahblah");
}
public void checked() {
soy2.add("Soy");
soy2.add("Σόγια");
soy2.add("soja");
soy2.add("Soybeans");
soy2.add("soybeans");
soy2.add("en:soybeans");
//checkedAllergens.add(soy2);
}
public ArrayList<String> getList() {
return soy2;
}
Class2
public Manage checkd;
String fetchedAllergens=new String();
List<String> fetchedAllergensList = new ArrayList<String>();
.......................
public void test() {
checkd = new Manage();
ArrayList<String> list = checkd.getList();
System.out.println(list);
System.out.println(fetchedAllergensList);
if(fetchedAllergensList.contains(list))
{
testtxt.setText("yes");
}
else
{
testtxt.setText("no");
}
// Test方法是由点击侦听器调用的,我从第2类中获得了带有以下代码的列表
protected String doInBackground(String... strings) {
final String barcode = strings[0];
@Nullable
String allergens = null;
try {
final String jsonStr = Jsoup.connect(
"https://world.openfoodfacts.org/api/v0/product/" + barcode + ".json")
.ignoreContentType(true)
.execute()
.body();
final JSONObject jsonObj = new JSONObject(jsonStr);
if (jsonObj.has("product")) {
JSONObject productNode = jsonObj.getJSONObject("product");
allergens = productNode.getString("allergens");
}
} catch (IOException | JSONException e) {
e.printStackTrace();
}
fetchedAllergens=allergens;
fetchedAllergensList = Arrays.asList(fetchedAllergens.split(","));
System.out.print(fetchedAllergensList);
return allergens;
}
答案 0 :(得分:0)
这里if(fetchedAllergensList.contains(list))
.contains()
希望列表中的元素不是arraylist
例如
fetchedAllergensList.contains("Soy")
如果要比较两个列表,请尝试
listA.containsAll(listB) && listB.containsAll(listA)
要检查list2是否包含list1中也存在的元素
public boolean elementExist(ArrayList<String> list1, ArrayList<String> list2) {
for (int i= 0; i < list2.length() i++) {
if (list1.contains(list2[i])) {
// element list2[i] exist in list1
return true;
}
}
return false;
}
如果list2的元素也位于list1中,则此方法将返回true