小编S K*_*mar的帖子

方法调用:Collections.emptyList()在不同情况下显示不同的行为?

根据Collections.emptyList()方法的注释,它返回一个空的不可变列表.

如果我们直接赋值给对象,这是合理的.例:

public class ImmutableList {
    public static void main(String[] args){
        List<String> namesList=Collections.emptyList();
        String[] names = {"Name1", "Name2", "Name3"};
        namesList.addAll(Arrays.asList(names));     
    }

    private List<String> getList() {
        String[] names = {"Name1", "Name2", "Name3"};
        return Arrays.asList(names);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们运行上面的程序,它会引发异常

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
    at org.learn.list.ImmutableList.main(ImmutableList.java:11)
Run Code Online (Sandbox Code Playgroud)

但是,如果我们将方法的输出分配给此变量,那么它运行正常.例:

public class ImmutableListTest2 {
    public static void main(String[] args){
        List<String> namesList=Collections.emptyList();
        ImmutableListTest2 ce = new ImmutableListTest2();       
        namesList = ce.getList(); 
        namesList.forEach(System.out::print);
    }

    private List<String> getList() {
        String[] names = …
Run Code Online (Sandbox Code Playgroud)

java collections exception list

1
推荐指数
1
解决办法
66
查看次数

如何创建一个键和值都作为枚举的 EnumMap 对象?

enum Month{JANUARY, FEBRUARY, MARCH, ...
}

enum Week{MONDAY, TUESDAY, WEDNESDAY, ...
}
Run Code Online (Sandbox Code Playgroud)

Map<Month, String> monthMap = new EnumMap<>(Month.class); 可以像这样创建简单的 EnumMap,其中键是 Enum,值是 String

但是,我想创建 EnumMap,其中键和值都是枚举类型。

Map<Month, Week> monthWeekMap = new EnumMap<> ....
创建上述枚举映射对象的语法是什么。

java collections enums dictionary data-structures

0
推荐指数
1
解决办法
37
查看次数