【问题标题】:Java 8 - fill ArrayListJava 8 - 填充 ArrayList
【发布时间】:2015-10-15 05:28:05
【问题描述】:

有没有更好的方法来像这样填充ArrayList(我在 Java 7 中已经这样做了):

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

【问题讨论】:

  • 这样有什么问题?
  • 我不知道有什么办法,但 Java 8 特性并不是我有很多专业知识的东西。但是当我查看您的代码时,唯一让它看起来又长又麻烦的东西是长变量名。就我个人而言,我也不会缩短那些,因为我宁愿使用长描述性名称和自我记录的代码而不是简洁,任何必须维护代码的人也会如此。
  • List&lt;ScheduleIntervalContainer&gt; scheduleIntervalContainers = new ArrayList&lt;&gt;(Arrays.asList(scheduleIntervalContainer));
  • @Alexis C.:对于单个元素列表,Collections.singletonList(…)) 可以让您免于创建数组...
  • 不清楚你在问什么。您谈论“填充”,但实际上只是添加一个元素。有什么比在该列表上调用名为 add 的方法更好的方法将单个元素添加到列表中?

标签: java lambda java-8 java-stream


【解决方案1】:

要填充List,可以使用Stream.generate(s) 生成无限的Stream,然后使用limit(maxSize) 限制结果的数量。

例如,要填充 10 个新 ScheduleIntervalContainer 对象的 List

List<ScheduleIntervalContainer> scheduleIntervalContainers = 
        Stream.generate(ScheduleIntervalContainer::new).limit(10).collect(toList());

generate 方法采用 Supplier:在这种情况下,供应商是每次创建 ScheduleIntervalContainer 的新实例的方法引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-18
    • 2017-11-17
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多