我有一个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
}
}
答案 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)
您可以执行以下操作:
List
进行迭代,并生成一个HashMap<String, Integer>
,表示每个String
出现的次数。 List
从list = new ArrayList<String>(new LinkedHashSet<String>(list));
删除重复项。使用LinkedHashSet
表示保留订单。List
并添加List
或string
来构建新的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
的序列不会被保留。
希望能帮助!!!