1

我确信这不是一个非常复杂的问题,但我对 java 还比较陌生,并且对这个问题困惑了一段时间。

假设我有一个包含 6 个字符串值的数组,假设它们是:[Apple, Banana, Banana, Banana, Orange, Orange]. 我正在寻找一种方法,该方法将采用该数组并返回一个字符串,在上述情况下,如:"Apple, 3×Banana, 2×Orange"

我将非常感谢一些帮助。我一直在尝试不同的技术来实现这一点,但是在数组的第一次迭代以及何时检测到重复值等方面都落在了正确的行为上。

4

4 回答 4

4

使用Map<String, Integer>. 遍历数组并将字符串作为 Map 键和计数器作为值:

Map<String, Integer> words = HashMap<String, Integer>();
for (String word : words) {
    Integer count = words.get(word);
    count = count == null ? 0 : count++;
    words.put(word, count);
}

现在单词映射包含单词与其计数之间的映射。

于 2012-05-08T12:11:42.720 回答
1

您可以使用TreeMap对象,其中 Fruit 名称是键,值是它被看到的次数。

您可以使用 foreach 循环逐个水果遍历数组水果,并在 TreeMap 中更新该水果的值。最后,您打印密钥及其值。由于我们使用了 TreeMap,因此键将按排序顺序排列。

于 2012-05-08T12:11:23.580 回答
1

你试过什么?创建HashMap的实例,其中键是水果名称,值是水果出现。迭代您的数组,在每次迭代时,将新水果添加到您的 Map 或增加现有键的出现次数。

然后遍历 HashMap,并构建你的字符串

于 2012-05-08T12:11:34.373 回答
1

如果所有内容都在一个 ArrayList 中,并且您知道可以使用的水果

ArrayList<String> fruits = new ArrayList<>();
//load some fruit code [ .. ]
int orangeOccurrences = Collections.frequency(fruits, "orange"); 

但 Map 绝对是更正确的方法。

于 2014-10-21T18:03:52.360 回答