-
集合转数组,必须使用集合的toArray(T[] array)。
反例:toArray无参方法存在问题,返回值只能是Object[],若强转会报ClassCastException错误。List<String> list = new ArrayList<String>(2); list.add("guan"); list.add("bao"); // 正例 String[] array = new String[list.size()]; array = list.toArray(array); // 反例 String[] strings = (String[]) list.toArray(); // 输出 java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String; ([Ljava.lang.Object; and [Ljava.lang.String; are in module java.base of loader 'bootstrap')
-
数组转集合,使用工具类Arrays.asList(),不能使用修改集合的方法。它的add/remove/clear方法会抛出unsupportedOperationException异常。
原因是asList 的返回对象是一个 Arrays 内部类,并没有实现集合的修改方法。String[] str = new String[] { "a", "b" }; List list = Arrays.asList(str); // 运行时异常 java.lang.UnsupportedOperationException list.add("c"); // list.get(0)也会随之修改 str[0]= "gujin";
数组与集合互转注意事项
最新推荐文章于 2024-05-31 10:46:10 发布