Java 数组转list_string数组转list

Java 数组转list_string数组转listava中数组转list使用Arrays.asList(T…a)方法。示例:publicclassApp{publicstaticvoidmain(String[]args){List<String>stringA=Arrays.asList("hello","world","A");String[]stringArray={"h…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ava中数组转list使用Arrays.asList(T… a)方法。

示例:

public 
class 
App {
  
public 
static 
void 
main(String[] args) {
    
List<String> stringA = Arrays.asList(
"hello"

"world"
,
"A"
);
    
String[] stringArray = {

"hello"
,
"world"
,
"B"
};
    
List<String> stringB = Arrays.asList(stringArray);
    
System.out.println(stringA);
    
System.out.println(stringB);
  
}
}

 运行结果:

[hello, world, A]
[hello, world, B]

 这个方法使用起来非常方便,简单易懂。但是需要注意以下两点。

一、不能把基本数据类型转化为列表

仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:

public 
class 
App {
  
public 
static 
void 
main(String[] args) {
    
int
[] intarray = {

1

2

3

4

5
};
    
//List<Integer> list = Arrays.asList(intarray); 编译通不过
    
List<
int
[]> list = Arrays.asList(intarray);
    
System.out.println(list);
  
}
}
output:
[[I
@66d3c617
]

这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。

解决方案:

  要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:

int
[] intArray = {

1

2

3

4
};
List<Integer> list = Ints.asList(intArray);

 二、asList方法返回的是数组的一个视图

视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。

public 
class 
App {
  
public 
static 
void 
main(String[] args) {
    
int
[] intArray = {

1

2

3

4
};
    
List<Integer> list = Ints.asList(intArray);
    
list.set(
0

100
);
    
System.out.println(Arrays.toString(intArray));
    
list.add(
5
);
    
list.remove(
0
);
  
}
}

 output:

[
100

2

3

4
]
UnsupportedOperationException
UnsupportedOperationException

原因:

get(i)? size()? 没有问题。

add()? ,不支持这个操作!!

Java 数组转list_string数组转list

为什么呢?来看看Arrays.asList(T…a)方法到底做了什么吧。

Java 数组转list_string数组转list

嗯~~好像没有什么呀,返回了一个ArrayLIst的实例啊。再多看点代码:

Java 数组转list_string数组转list

这是什么鬼,原来返回的ArrayList不是java.util.ArrayList,而是Arrays中的一个内部类实例。一下子就感到被欺骗了。

看看这个内部类都有什么方法吧,貌似的确么有add方法呀~~

Java 数组转list_string数组转list

那么如果想要使用add方法应该如何做呢?

Java 数组转list_string数组转list

只需要在外层再使用java.util.ArrayList包装一层就可以了。

最后,Arrays.asList方法本身是没有任何问题的,只是看要对转换出来的list做什么操作,如果只是需要查询list中的元素,那么直接使用就好;如果还需要再次添加、移除元素,那么就包装一层java.util.ArrayList再使用吧。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/172273.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号