Java 8 - 填充ArrayList

7

在Java 7中,我是这样填充ArrayList的。有更好的方法吗?

List<ScheduleIntervalContainer> scheduleIntervalContainers = new ArrayList<>();
scheduleIntervalContainers.add(scheduleIntervalContainer);

1
那种方式有什么问题吗? - Eran
我不知道有什么方法,但Java 8的功能并不是我的专长。但是当我看你的代码时,唯一让它看起来冗长和繁琐的是变量名太长。个人而言,我也不会缩短这些变量名,因为我更喜欢长而具有描述性的名称和自我说明的代码,而不是简洁明了的代码,任何需要维护代码的人都会这样。 - Sammy
2
List<ScheduleIntervalContainer> scheduleIntervalContainers = new ArrayList<>(Arrays.asList(scheduleIntervalContainer)); - Alexis C.
2
@Alexis C.:对于单个元素列表,有Collections.singletonList(…)可以避免您创建数组... - Holger
3
不清楚你在问什么。你谈论“填充”,但实际上只是添加了一个元素。你能想到比在列表上调用名为add的方法更好的方式来添加单个元素吗? - Holger
1个回答

14
为了填充一个 List,可以使用 Stream.generate(s) 生成一个无限的 Stream,然后使用 limit(maxSize) 限制结果数量。
例如,要填充一个包含 10 个新的 ScheduleIntervalContainer 对象的 List
List<ScheduleIntervalContainer> scheduleIntervalContainers = 
        Stream.generate(ScheduleIntervalContainer::new).limit(10).collect(toList());

“generate” 方法使用了一个 “Supplier” 参数:在本例中,这个 supplier 是一个方法引用,每次创建一个新的 “ScheduleIntervalContainer” 实例。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接