检查Arraylist中是否存在字符串

时间:2016-05-31 10:06:02

标签: java android arrays arraylist

我有一个代码检查另一个arraylist中是否存在arraylist元素,如果发现它将此元素添加到新的arraylist中。 (过滤的种类)。

ArrayLists名称:

checking elements arraylist: CoreSite.
Reference ArrayList: SpinnerSelectionArrayList. (received from multichoice spinner)
New ArrayList: MCoreSite.

问题是我尝试的所有可能的方法只将元素与参考列表的第一个元素进行比较!如果匹配则重要。如果没有,它不会检查参考arraylist的第二个元素..我找不到wwhy?!

我使用了contains(),我也尝试计算并检查计数结果。

编辑:解决了,微调器结果在每个逗号后都返回了额外的空格,这就是为什么只有第一个元素匹配:) ..非常感谢

代码:

ReaderGo.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           SpinnerSelectionString = multiSpinner.getSpinnerText();
           if(SpinnerSelectionString == null){
               Toast.makeText(getApplicationContext(), "Select Core Sites First", Toast.LENGTH_LONG).show();
           }
           else {
               SpinnerSelectionString = SpinnerSelectionString.replaceAll(",", "\",\"");
               SpinnerSelectionString = "[\"" + SpinnerSelectionString + "\"]";


               try {
                   JSONArray jsonArray = new JSONArray(SpinnerSelectionString);
                   SpinnerSelectionStringArray = new String[jsonArray.length()];
                   for (int i = 0; i < jsonArray.length(); i++) {
                       SpinnerSelectionStringArray[i] = jsonArray.getString(i);
                   }
               } catch (JSONException e) {
                   e.printStackTrace();
               }

               Collections.addAll(SpinnerSelectionArrayList, SpinnerSelectionStringArray);

               MCoreSite.clear();

               for (int i = 0; i < CoreSite.size(); i = i + 1) {
                   int count = Collections.frequency(SpinnerSelectionArrayList, CoreSite.get(i));
                   if (count!=0) {
                       MCoreSite.add(CoreSite.get(i));
                   }
               }
               Toast.makeText(getApplicationContext(), SpinnerSelectionArrayList.toString(), Toast.LENGTH_LONG).show();
               Toast.makeText(getApplicationContext(), CoreSite.toString(), Toast.LENGTH_LONG).show();
               Toast.makeText(getApplicationContext(), MCoreSite.toString(), Toast.LENGTH_LONG).show();

           }
       }

    });

以下是三个阵列的吐司截图:

元素数组:

enter image description here

参考数组: enter image description here

结果列表: enter image description here

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

ArrayList<String> result = new ArrayList();
for(int i = 0; i < firstList.size(); i++) {
    String item = firstList.get(i);
    if(secondList.contains(item)) {
        result.add(item);
    }
}

结果是第一个List和第二个equals()中存在的元素列表。如果我理解正确,这就是你想要的。

教育事实 - 这将有效,因为列表使用Strings来检查两个元素是否相同,而不是==。因此,具有相同内容的两个不同Image将被视为共同元素: - )