有人能告訴我如何計算字符串數組中的重複值嗎?在字符串數組中計數重複的值
例如:
String [] names = {"Caty", "John", "Nick", "John", "Philip", "Caty", "Caty"};
返回的值應爲5,因爲出現卡蒂3次和John 2次。
謝謝
有人能告訴我如何計算字符串數組中的重複值嗎?在字符串數組中計數重複的值
例如:
String [] names = {"Caty", "John", "Nick", "John", "Philip", "Caty", "Caty"};
返回的值應爲5,因爲出現卡蒂3次和John 2次。
謝謝
我會將名稱插入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();
}
}
應用嵌套循環的概念。
在第一循環迭代這個數組,並採取第i個元素,並在下一循環檢查該元素在整個陣列,並將它們在地圖中存儲的重複值
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);
}
然後這個地圖將所有的信息,所有元素是重複的,什麼是重複計數。
如果名稱列表變大,則此方法執行得不好。 – Rob
請試試這個
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
比較所有的人,並保持一個計數。 –
你如何在現實生活中做到這一點? – Pshemo
在以各種可能的方式回答您的問題之前,請執行以下操作:迄今爲止您嘗試了什麼? –