如何根据用户输入获取数组中字符串的出现次数

问题描述:

我有一个Arraylist如下,我需要计算Arraylist中所有元素的出现次数,知道内容Arraylist可能会根据用户输入而改变。即:在所述第二时间,用户可以输入(C和d)如何根据用户输入获取数组中字符串的出现次数

ArrayList<String> letters = new ArrayList<String>(); 

letters.add("A"); 
letters.add("B"); 
letters.add("A"); 
letters.add("B"); 
+0

你的意思,你要计算的元素有多少时间是在列表中? – rohitmohta

+2

@Nermeen只是为了避免额外的编码,为什么你不使用'HashMap'并且保持计数,就像这样简单。 –

+0

是的,我需要找出有多少个A和B存在 – Nermeen

遍历ArrayList,并检查是否每个元素匹配的特定String

String test = //string you want to count occurrences of 
int count = 0; 
for (String s : letters) { 
    if (s.equals(test)) { 
     count++; 
    } 
} 
+0

我认为他们需要每个元素的计数。因此,需要HashMap 来计算列表中每个唯一元素的出现次数。 – rohitmohta

+0

什么是'字母'?问题中没有任何内容说明列表中的字符串只有单个字母。这只是一个例子。 – Andreas

+0

@Andreas'letters'是'ArrayList'。 OP的代码就在那里。 –

可以使用Map保持跟踪令牌(和计数)。如果您使用LinkedHashMap,它将保留广告订单。我会用for-each loop来重复letters;如果map当前不包含letter将其设置为1(否则递增当前计数)。最后,打印map。喜欢的东西

Map<String, Integer> map = new LinkedHashMap<>(); 
for (String letter : letters) { 
    map.put(letter, !map.containsKey(letter) ? 1 : 1 + map.get(letter)); 
} 
System.out.println(map); 

此外,您还可以初始化List当你声明

List<String> letters = Arrays.asList("A", "B", "A", "B"); 
+0

谢谢,它的工作 – Nermeen

+0

但另一个问题,如何能够从这张地图得到一定的价值,因为我不熟悉地图 – Nermeen

+0

@Nermeen'int countA = map.get(“A”);'**和**'int countB = map.get(“B”);' –