删除ArrayList适配器中的重复项

时间:2015-07-12 19:37:59

标签: android arrays arraylist

如何删除ArrayList中的重复项。我是android编程的新手,我也尝试过研究其他的但是我很难弄清楚如何消除类似的项目。一些建议是使用hashmap但我不知道在哪里放它。这是我的代码。

    mAdapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, list);
    lvList.setAdapter(mAdapter);
    lvList.setOnItemClickListener(this);

    schoolIndex.clear();
    ArrayList<String> finalFilterList = list;
    ArrayList<String> finalSchoolsList = new ArrayList<String>(
            Arrays.asList(this.sList));
    for (int i = 0; i < finalFilterList.size(); i++) {
        for (int o = 0; o < finalSchoolsList.size(); o++) {
            if (finalFilterList.get(i).equalsIgnoreCase(
                    finalSchoolsList.get(o))) {
                schoolIndex.add(o);
            }
        }
    }
    mAdapter = new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_1, list);
    lvList.setAdapter(mAdapter);
    lvList.setOnItemClickListener(this);
    if (list.isEmpty()) {
        Toast.makeText(getActivity(), "No Hospitals Found",
                Toast.LENGTH_SHORT).show();
        navi.dia.show();
    }
    return v;

2 个答案:

答案 0 :(得分:1)

如果要删除重复项,可以将所有元素添加到Set,然后将它们添加回ArrayList,但如果使用Set,则将丢失订单

当您在适配器中使用ArrayList时,我建议您使用保留订单的LinkedHashSet

试试这个:

      List<String> arrayList = new ArrayList<>(); // this will be your arraylist
      LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
      linkedHashSet.addAll(arrayList);
      arrayList.clear();
      arrayList.addAll(linkedHashSet);

答案 1 :(得分:0)

您可以删除重复项:

Set<String> set = new HashSet<String>('Your ArrayList');

// Then you can create a new ArrayList, this will be a list with no duplicates
ArrayList<String> newList = new ArrayList<String>(set);

很抱歉,如果这不回答问题