Java8 - 通过索引获取,但类似于' getOrDefault'对于地图?

时间:2017-01-12 07:46:22

标签: collections java-8 optional

是否有更简洁的方法来检查特定索引(例如list.getOrDefault(index, "defaultValue"))是否存在值。或者甚至在特定索引超出列表范围时执行默认操作。

执行此操作的常用方法是在尝试此操作之前检查列表的大小。

1 个答案:

答案 0 :(得分:3)

默认的List界面没有此功能,据我所知({3}}或Guava都没有(并且可以从Javadocs中得知)。

如果这是你打算经常使用的功能,你可以编写自己的静态方法(这里受到Guava Apache Commons Collections类的启发):

public class Lists {

  public static <E> E getOrDefault(int index, E defaultValue, List<E> list) {
    if (index < 0) {
      throw new IllegalArgumentException("index is less than 0: " + index);
    }
    return index <= list.size() - 1 ? list.get(index) : defaultValue;
  }

}