有人能告诉我如何计算String数组中的重复值吗?
例如:
String [] names = {"Caty", "John", "Nick", "John", "Philip", "Caty", "Caty"};
返回值应为5,因为Caty出现3次而John出现2次。
谢谢
答案 0 :(得分:3)
我会将名称插入Map<String, Integer>
,其中键是名称,值是已插入名称的次数。换句话说,对于每个名称,在地图中查找以获取先前的计数。如果未找到,则先前的计数为0.将一个添加到先前的计数,并将put(name, newCount)
添加回地图。完成添加名称后,迭代条目集并将大于1的计数求和(如果我理解您的计数方法)。
String[] names = ...
Map<String, Integer> map = new HashMap<>(names.length);
for (String name : names) {
Integer count = map.get(name);
if (count == null) {
count = 0;
}
map.put(name, count + 1);
}
int count = 0;
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() > 1) {
count += entry.getValue();
}
}
答案 1 :(得分:1)
请试试这个
public static void main(String[] args)
{
String [] names = {"Caty", "John", "Nick", "John", "Philip", "Caty", "Caty"};
HashMap<String, Integer> repeatNames = new HashMap<String, Integer>();
int repeatCount=0;
for(int i=0 ;i<names.length;i++)
{
int count=0;
for(int k=0;k<names.length;k++)
{
if(names[i]==names[k])
{
count++;
}
}
if(count>1)
{
if(!repeatNames.containsKey(names[i]))
{
System.out.println(names[i]+":"+count);
repeatNames.put(names[i], count);
repeatCount+=count;
}
}
}
System.out.println("Total Count:"+repeatCount);
}
输出
Caty:3
John:2
Total Count:5
答案 2 :(得分:0)
应用嵌套循环的概念。
在第一个循环中迭代数组并获取第i个元素并在下一个循环中检查整个数组中的元素并将它们存储在map中以获取重复值
String[] names = {"Caty","John"........}
Map<String,int> duplicateMap = new HashMap<String,int>();
for (i=0;i<=names.length;i++) {
String x = names[i];
int count = 0;
for (j=0;j<=names.length;j++) {
if (x.equals(names[j])
count++;
}
duplicateMap.put(x,count);
}
然后,这张地图将包含所有元素都重复的所有信息,以及它们的重复计数。