如何在ArrayList中搜索相似之处

时间:2015-10-09 17:13:50

标签: java android arraylist

我有一个String的arrayList,我想在Spinner或下拉菜单中显示,但主要是发生的事情是我有字符串重复,我想要做的是搜索arrayList的相似之处,如果找到它例如一个字符串" Hello World"在arrayList中发生7次,删除其他6并为其分配7以显示它发生了7次,所以我的新String将是" Hello world(7)",任何人都可以帮助我我如何在下面的代码中实现这一点:

for(int i = 0; i < timesCalleddb.getAllTimesCalled(missedCall.getNumber()).size(); i++)
    {

        if(timesCalleddb.getAllTimesCalled(missedCall.getNumber()).get(i) ==
                timesCalleddb.getAllTimesCalled(missedCall.getNumber()).get(i+1))
        {
           //where am guessing the implementation my problem should be
        }

    }

3 个答案:

答案 0 :(得分:2)

您应该考虑使用地图数据结构,因为您必须存储计数器,否则,哈希集将是完美的:

ArrayList<String> strs = ...;

HashMap<String, Integer> counter = new HashMap<String, Integer>();

for(String s : strs) {
    counter.put(s, counter.get(s) == null ? 1 : counter.get(s) + 1);
}

for(String s : counter.keySet()) {
    System.out.println(s + " (" + counter.get(s) + ")");
}

答案 1 :(得分:0)

您可以执行以下操作:

  1. List进行迭代,并生成一个HashMap<String, Integer>,表示每个String出现的次数。
  2. 使用Listlist = new ArrayList<String>(new LinkedHashSet<String>(list));删除重复项。使用LinkedHashSet表示保留订单。
  3. 通过迭代List并添加Liststring来构建新的string + " (" + map.get(string) + ")",具体取决于map.get(string)1还是超过1

答案 2 :(得分:0)

要从String中删除重复的List,请使用以下命令:

List<String> arrayList = new ArrayList<>();
// Your elements must be added to the arrayList, before progressing to the next step.
Set<String> set = new HashSet<>();
set.addAll(arrayList );

// Code for getting count of each String
int count = 0;
List<Integer> arrayListCount = new ArrayList<>();
for (Iterator<String> it = set.iterator(); it.hasNext(); ) {
    String str = it.next();
    arrayListCount.add(count , 0);
    for(int i = 0; i < arrayList.size(); i++){
        String s = arrayList.get(i);
        if (str.equals(s)) {
            arrayListCount.set(count , arrayListCount.get(count) + 1);
       }                
    }
    count++;
}
// Code for getting count ends here

arrayList.clear();
arrayList.addAll(set);

注意: List的序列不会被保留。

希望能帮助!!!