gpt4 book ai didi

java - 当分类器返回列表时,groupingBy 如何工作?

转载 作者:行者123 更新时间:2023-12-02 18:27:11 28 4
gpt4 key购买 nike

考虑this SO answer

我有几个问题:

  1. 它是如何运作的?是groupingBy()检查返回值是否来自classifierList并比较每一项?对我来说,这听起来不像是典型的 Java 函数
  2. 如何List包含不同的变量类型?编译器是否将其视为 List<Object>
  3. 使用 List 是否是反模式?

最佳答案

正如浩克已经说过的,这里绝对不涉及魔法。 Listequals 进行比较方法,就像任何其他对象一样。

为了回答你的第二个问题,列表中的项目类型可以使用泛型来控制。太糟糕了,他们实际上在您链接到的答案中使用了原始类型。人们应该使用 List<?>相反,但是 List<Object>本来也不错。

通常,列表实现的底层数组使用 Object[] (至少对于ArrayList来说是这样)。

一个List<Object>只能包含 Object实例,但你猜怎么着,Java 语言中的所有对象都是 Object s,以便该列表可以包含任何对象。

不变性

重要的是,映射的键(在本例中为 List )不可变。典型的方式Map有效,是它依赖于不改变的 key 。幸运的是,链接帖子的作者使用 List::of ,它返回一个不可修改列表。

相关:Are mutable hashmap keys a dangerous practice?


链接帖子的作者使用了 List作为键,他在其中存储用作分类器的字段。我会提出使用列表的替代解决方案,因此选择多个字段用作分类器。我会创建一个 record相反,为了明确创建分类器的意图:record AgeAndNameClassifier(int age, String name) { }然后分组依据:groupingBy(item -> new AgeAndNameClassifier(item.getAge(), item.getName())...

关于java - 当分类器返回列表时,groupingBy 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69986016/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com