计算String数组中的重复值

时间:2013-10-11 18:09:04

标签: java string

有人能告诉我如何计算String数组中的重复值吗?

例如:

String [] names = {"Caty", "John", "Nick", "John", "Philip", "Caty", "Caty"};

返回值应为5,因为Caty出现3次而John出现2次。

谢谢

3 个答案:

答案 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);
}

然后,这张地图将包含所有元素都重复的所有信息,以及它们的重复计数。