首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java List ` is `方法非常混乱

Java List ` is `方法非常混乱
EN

Stack Overflow用户
提问于 2019-03-09 03:28:40
回答 2查看 447关注 0票数 3

当我在方法上查看java文档时

它很过载,所有的元素数量从1到10.

上面写着:

返回包含五个元素的不可修改列表。 有关详细信息,请参阅不可修改的列表。 类型参数:e-列表的元素类型参数: e1 -第一个元素e2 -第二个元素e3第三个元素e4第四个元素e5第五个元素

我只是一点都不明白,甚至可以找到一个方法来使用这个?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-09 03:35:48

List.of()方法是方便的静态帮助程序,可以在一个调用中创建一个固定大小的列表(而不是创建一个空列表,然后几次调用add )。这个调用返回的列表是不可修改的(不能添加或删除任何元素)。

作为一个例子,比较:

代码语言:javascript
复制
ArrayList<String> supportedLanguages = new ArrayList<>();
supportedLanguages.add("en-us");
supportedLanguages.add("en-gb");
supportedLanguages.add("de");

至:

代码语言:javascript
复制
List<String> supportedLanguages = List.of("en-us", "en-gb", "de");

碰巧有11个这样的重载,从零到十个元素(List.of()变成了一个空的不可修改的列表),更大的情况是使用带有签名@SafeVarargs static <E> List<E> of​(E... elements)瓦拉格重载来处理。

票数 6
EN

Stack Overflow用户

发布于 2019-03-09 03:53:03

三个接口ListSetMap都获得了新的重载.of方法。

代码语言:javascript
复制
List< Integer > luckyNumbers = List.of( 7 , 11 , 42 ) ;

Set< DayOfWeek > weekend = Set.of( DayOfWeek.SATURDAY , DayOfWeek.SUNDAY ) ;

Map< DayOfWeek , Employee > dutyRoster = 
    Map.of(
        DayOfWeek.MONDAY , alice ,
        DayOfWeek.TUESDAY , bob ,
        DayOfWeek.WEDNESDAY , alice ,
        DayOfWeek.THURSDAY , carol , 
        DayOfWeek.FRIDAY , carol
    )
;

便利性

能够在一行代码中声明和填充ListSetMap非常方便。简洁,优雅,清楚地表达了程序员的意图。

不可修改

通常,这样短的对象集合被设计为只读的.也就是说,使用集合的程序员不能添加、删除或替换任何收集的对象。

请注意,收集到的对象中的内容可能是也可能不是易变。这不在收藏品的职责范围之内。

Collections实用工具类提供了使集合不可修改的方法,但是您必须想方设法使用此特性。这样做意味着有更多的代码行。新的.of方法更简单。

优化

注意,返回接口的对象而不是类。例如,List而不是ArrayListSet而不是HashSetMap而不是HashMap。您不知道返回的对象正在使用什么具体类。你也不在乎。

这意味着Java团队可以自由地优化具体的实现,将代码从一个版本更改为另一个版本。他们甚至可以选择在运行时使用不同的实现,具体取决于所收集对象的数量或类型。

例如,如果您收集的对象是enum类型的,那么可以在场景后面使用高度优化的EnumSet来满足您对Set.of的请求。同样,EnumMap for Map.of。请参阅此答案顶部的SetMap代码,作为收集enum对象的示例,因此有资格进行此优化。

Brian和其他人已经讨论过这种优化的自由。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55073707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档