gpt4 book ai didi

java - 计算 ArrayList 中项目的出现次数

转载 作者:搜寻专家 更新时间:2023-10-31 08:06:13 26 4
gpt4 key购买 nike

我有一个 java.util.ArrayList<Item>和一个 Item对象。

现在,我想获得 Item 的次数存储在数组列表中。

我知道我能做到arrayList.contains()检查但它返回 true,无论它是否包含一个或多个 Item秒。

Q1。如何找到 Item 在列表中的存储次数?

Q2。此外,如果列表包含多个项目,那么我如何确定其他项目的索引,因为 arrayList.indexOf(item)每次只返回第一个项目的索引?

最佳答案

您可以使用 Collections 类:

public static int frequency(Collection<?> c, Object o)

Returns the number of elements in the specified collection equal to the specified object. More formally, returns the number of elements e in the collection such that (o == null ? e == null : o.equals(e)).

如果您需要多次计算长列表的出现次数,我建议您使用 HashMap 来存储计数器并在将新项目插入列表时更新它们。这将避免计算任何类型的计数器..但当然你不会有索引。

HashMap<Item, Integer> counters = new HashMap<Item, Integer>(5000);
ArrayList<Item> items = new ArrayList<Item>(5000);

void insert(Item newEl)
{
if (counters.contains(newEl))
counters.put(newEl, counters.get(newEl)+1);
else
counters.put(newEl, 1);

items.add(newEl);
}

最后的提示:您可以使用其他集合框架(如 Apache Collections )并使用描述为 Bag 的数据结构

Defines a collection that counts the number of times an object appears in the collection.

这正是您所需要的..

关于java - 计算 ArrayList 中项目的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647232/

26 4 0