使用Arrays.asList作为List批量初始化程序是否有更好的替代方法?值得关注的是,这个问题很冗长,涉及一个无关的类和方法。
List<Double> myList = new ArrayList<Double>(Arrays.asList(3.01d, 4.02d, 5.03d));
编辑:这个问题与批量初始化有关,通常会有超过示例中显示的三个值。
答案 0 :(得分:5)
如果您知道以后不需要在列表中添加任何内容,则可以执行
List<Double> myList = Arrays.asList(3.01d, 4.02d, 5.03d);
我很确定可以修改从Arrays.asList
返回的列表,但只是因为您可以更改那里的元素 - 您无法向其中添加新元素。
答案 1 :(得分:3)
使用guava,
List<Double> myList = Lists.newArrayList(3.01d, 4.02d, 5.03d));
答案 2 :(得分:1)
另一种选择是作为匿名内部类:
List<Double> myList = new ArrayList() {
{
add(3.01d);
add(4.02d);
add(5.03d);
}
};
答案 3 :(得分:1)
是的,你可以这样做:
List<Double> myList = Arrays.asList(new Double[]{3.01d, 4.02d, 5.03d});
// or
List<Double> myList = Arrays.asList(3.01d, 4.02d, 5.03d);
答案 4 :(得分:1)
从java 9开始,您可以使用List.of
工厂方法:
static <E> List<E> of(E... elements)
返回包含任意数量元素的不可变列表。
或者使用番石榴:
public static <E> ImmutableList<E> of(E e1, E e2,...)
按顺序返回包含给定元素的不可变列表。
答案 5 :(得分:0)
与100%的问题不匹配,但添加此答案以防止想要实例化List只是为了能够立即对其中的值执行某些操作,而不仅仅为了实例化而实例化List单独进行实例化。
使用Java 8,您可以使用Stream.of(T... values)
,然后通过流API处理蒸汽,以便从值列表中获得所需的结果。
例如,要获取一系列值的最大值...
int maxValue = Stream.of(10, 5, 25).max(Integer::compareTo).get();
上述示例对于您需要Math.max(#,#)
类型功能但有两个以上要处理的参数时也很有用。