...把数组转换成长度固定的List,Arrays类的asList()方法的用法

如题所述

深入了解Java面向对象编程:Arrays类asList()方法的巧妙应用
在Java编程的世界里,Arrays类的asList()方法就像是一位魔术师,能够将静态的Java数组瞬间转换为动态的List对象,这种转换使得数组的操作更加灵活,尤其是在处理固定长度的集合时。
不同于普通的List,asList()方法创建的List对象保持着与数组相同的长度,这意味着它的大小是不可变的。这意味着当你尝试通过调用add()或remove()方法来扩展或缩小它的规模时,系统会毫不客气地抛出java.lang.UnsupportedOperationException,提醒你这是对固定属性的无理要求。
让我们来看一个实例,假设我们有一个字符串数组:
String[] ss = {"Tom", "Mike", "Jack"};
List list = Arrays.asList(ss);
list.set(0, "Jane"); //修改元素合法,输出为:["Jane", "Mike", "Jack"]
System.out.println(Arrays.toString(ss));
尽管set方法允许我们改变数组中的某个元素,但尝试删除或添加元素时,如list.remove("Mike")或list.add("Mary"),会引发预期的异常,因为它们试图改变List的固定长度特性。
这一功能主要源于孙卫琴在她的经典著作《Java面向对象编程》中的深入解析,这本书为开发者提供了丰富的理论与实践指导。通过asList(),我们能够更优雅地处理数组,同时不失Java面向对象编程的优雅和灵活性。
总的来说,asList()方法在Java编程中扮演着将静态转化为动态的桥梁角色,它帮助我们理解了固定长度数组与可变List之间的界限,是实现高效编程不可或缺的工具之一。
温馨提示:内容为网友见解,仅供参考
无其他回答

《Java面向对象编程》导读-把数组转换成长度固定的List,Arrays类的as...
String[] ss = {"Tom", "Mike", "Jack"}; List list = Arrays.asList(ss); list.set(0, "Jane"); \/\/修改元素合法,输出为:["Jane", "Mike", "Jack"] System.out.println(Arrays.toString(ss)); 尽管set方法允许我们改变数组中的某个元素,但尝试删除或添加元素时,如list.remove("...

Java Arrays.asList 和 new ArrayList(Arrays.asList()) 的对比
首先看`Arrays.asList`。这个方法将数组包装为一个固定长度的`List`对象。它不会复制数组数据,只是创建了一个视图,允许在程序中使用`List`接口。然而,不能修改`List`的长度,包括添加或删除元素。可以修改`List`中的数组元素,改变原始数组的值。尝试向`List`添加元素时,程序会抛出`UnsupportedOperatio...

java之Arrays的asList方法
在Java中,Arrays类包含一个名为asList的方法,这个方法的目的是将任何类型的数组转换为list形式。比如,我们有一个字符串数组"12,34,21,34",我们可以使用asList方法将其转换为list如下:String stringArray="12,34,21,34";List lists=Arrays.asList(stringArray.split(","));接下来,我们可以使用...

Arrays.asList()是什么意思,有什么用
Arrays.asList()将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

Java踩坑记系列之Arrays.asList
为解决上述问题,可采用多种方式。一种方法是将数组转换为引用类型,即包装类,例如:另一种解决方案是使用 Google 的集合类 `Ints.asList`,它同样返回一个非标准的集合,不支持 `add` 和 `remove` 方法。要确保转换后列表的长度准确且能进行增删操作,应使用 `java.util.ArrayList` 类。此外,`...

List.of() Vs Arrays.asList()
Arrays.asList()自早期Java版本以来可用,用于创建由指定数组支持的固定大小列表。此方法支持列表的修改,对列表的更改会直接反映在原始数组上。在选择使用哪一种方法时,应考虑列表的不可变性与是否需要支持修改。List.of()适用于需要固定、不可变集合的场景;而Arrays.asList()则适用于由数组支持的可...

千万不要这样使用Arrays.asList !
这是因为asList()返回的是一个特殊的内部类java.util.Arrays.ArrayList,它不完全实现List接口的所有方法,仅作为打印的便利工具。这样,基本类型的数组无法被正确地泛型化处理。其次,一旦你使用asList()将数组转换为集合,对这个集合或原数组进行修改时,你会发现两者会同时发生变化。这是因为asList()...

数组转成List
List<>这里面不能是基本数据类型,要是基本数据类型的包装类。如果数组是Integer[] s = {5,3,4,6,2,7} 就可以用一句话:List<Integer> list = new ArrayList<Integer>(Arrays.asList(s));来实现。如果数组是int[] s = {5, 3, 4, 6, 2, 7};用一句话我也还没想出来。

string数组应该如何转list对象?
在Java编程中,将字符串数组转化为List对象主要依赖于Arrays.asList()方法。此方法操作简单,只需传入需要转换的数组作为参数即可完成转换。值得注意的是,转换后得到的对象是Arrays类内部定义的ArrayList类型,而非标准的java.util.ArrayList。举例说明,我们首先定义一个名为arr的字符串数组,内容包含三个...

Java打印数组的5种不同方法
(4)利用Arrays.asList(arr)将数组转换为列表,再使用System.out.println()打印列表内容。这种方式适用于需要对列表进行后续操作的场景。(5)使用Arrays.asList(arr).stream().forEach(s -> System.out.println(s))方法,通过流操作打印数组元素。这种方式适合现代Java编程,利用了函数式编程的风格。

相似回答
大家正在搜