当前位置: 首页 > 面试题库 >

为什么要收集文字?

濮阳景天
2023-03-14
问题内容

从关于Java 7的各种在线文章中,我了解到Java 7将具有如下的集合文字1:

List<String> fruits = [ "Apple", "Mango", "Guava" ];
Set<String> flowers = { "Rose", "Daisy", "Chrysanthemum" };
Map<Integer, String> hindiNums = { 1 : "Ek", 2 : "Do", 3 : "Teen" };

我的问题是:

  1. of在所有的收集类中都不能提供一种可以按如下方式使用的静态方法:

List<String> fruits = ArrayList.of("Apple", "Mango", "Guava");

IMO看起来和文字版本一样好,而且也很简洁。为什么然后他们必须发明一种新的语法( 编辑: “新”指的是Java的新手。)?

  1. 当我说List<String> fruits = [ "Apple", "Mango", "Guava" ];List将实际得到什么?会是ArrayList还是LinkedList其他?

1正如评论中指出的那样,集合文字并 没有 削减Java 7的使用,也没有削减Java 8的使用。(这是来自Oracle开发人员Brian Goetz
的一封电子邮件,总结了不包括此功能的理由;这是提案本身)


问题答案:

对问题2的回答:

final List<Integer> piDigits = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9];

给你一个 不变的 清单。

该建议的整体思想是 无法 指定子类型。编译器根据右侧的集合选择合适的实现。

在此处阅读详细信息:提案:集合文字

对问题1的回答:是的。这是风格问题。



 类似资料:
  • 问题内容: 是什么决定了垃圾收集器何时真正收集?它是在一定时间之后还是在一定数量的内存用完之后发生的吗?还是还有其他因素? 问题答案: 它在确定是时候运行时运行。在世代垃圾收集器中,一种常见的策略是在第0代内存分配失败时运行收集器。也就是说,每次你分配一小块内存(大块通常直接放置在“旧”代中)时,系统都会检查gen-0堆中是否有足够的可用空间,如果没有,则运行GC释放空间以使分配成功。然后将旧数据

  • 本文向大家介绍为什么要使用Apache Kafka集群?相关面试题,主要包含被问及为什么要使用Apache Kafka集群?时的应答技巧和注意事项,需要的朋友参考一下 答:为了克服收集大量数据和分析收集数据的挑战,我们需要一个消息队列系统。因此Apache Kafka应运而生。其好处是: 只需存储/发送事件以进行实时处理,就可以跟踪Web活动。 通过这一点,我们可以发出警报并报告操作指标。 此外,

  • 本文向大家介绍集群中为什么要有主节点?相关面试题,主要包含被问及集群中为什么要有主节点?时的应答技巧和注意事项,需要的朋友参考一下 在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,所以就需要主节点。

  • 问题内容: 在深入研究之后,我发现Stream和Collector之间存在许多重复的逻辑,这些逻辑违反了不要重复自己的原则,例如:jdk-9和中的Stream#map&Collectors#mapping,Stream#filter&Collectors#filtering。等等 但自从溪流遵守告诉,不要问得墨meter耳的法则/ 得墨Law律和集热器遵守继承构成原则看来,这是合理的。 我只能想到

  • 请允许我提出一些抱怨,也许是令人厌烦但我想描述的是:“为什么会提出这个问题呢?”。我昨天晚上在这里、这里、这里回答的问题和其他人不一样。 Stream operations在做一些简单的工作时比Collector更有表现力,但是它们比Collector更慢,因为它会为每个操作创建一个新的Stream,并且Stream比Collector更繁重和抽象。例如: 收集器无法将短路终端操作作为流应用。例如

  • 我正在为新手程序员编写一个库,所以我试图保持API尽可能干净。 我的库需要做的事情之一是对大量的ints或long集合执行一些复杂的计算。我的用户需要从许多场景和业务对象中计算这些值,因此我认为最好的方法是使用流来允许用户将业务对象映射到或,然后在收集器中计算这些计算。 所以与其能够做到 我必须提供这样的供应商、累加器和组合器: 这对我的新手用户来说太复杂了,而且很容易出错。 在使用或的同时,是否