java - 获取所有重复项

标签 java spring data-structures

例如,我有一个对象列表

    List<Document> myList = new ArrayList<Document>();
    myList.add(new Document("TypeA"));
    myList.add(new Document("TypeB"));
    myList.add(new Document("TypeA"));
    myList.add(new Document("TypeA"));
    myList.add(new Document("TypeB"));

现在每个文档都有一个不同的类型属性,这就是我传递给构造函数的属性(这不是真实情况,只是试图简化它。

我需要做的是,向所有具有相同类型的 Document 对象添加一个新属性“counter”。因此,具有“TypeA”的三个 Document 对象需要具有递增的计数器值 (1,2,3)。如果只有一个具有特定类型的文档,那么它不应该有计数器值。

所以我想我基本上需要以某种方式过滤(分组)它们,然后迭代它们。但我怎样才能有效地做到这一点呢?

我有 JavaScript 背景,这对我来说很容易,但我发现 Java 似乎很复杂。

最佳答案

您可以使用存储计数的数据结构,例如 Bag

Bag is a collection that allows storing multiple items along with their repetition count:

    Bag<Integer> bag = new HashBag<>(
    Arrays.asList(1, 2, 3, 3, 3, 1, 4));             
    assertThat(2, equalTo(bag.getCount(1)));

关于java - 获取所有重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59156830/

相关文章:

java - 忽略 hibernate native 查询中的空列表

java - 碰撞检查方法适用于 Mac,但不适用于 PC

java - 编译器是否可以有最大输出?

java - 使用 HttpRequest 初始化 Spring Session Bean(使用注释)

java - 将两个实体(学生、类(class))迭代的列表传递给 spring View

java - 如何创建一个 Spring Data JPA 查询,该查询将从相同类型的对象列表中返回与 3 个参数匹配的对象

data-structures - 2阶B树是满二叉树吗?

java - 删除下载目录中的文件

java - 计算所有可能的组合

sql-server - SQL Server 优先级排序