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再使用吧。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 主宰操作系统的经典算法

    主宰操作系统的经典算法此篇文章带你梳理一下操作系统中都出现过哪些算法进程和线程管理中的算法进程和线程在调度时候出现过很多算法,这些算法的设计背景是当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争CPU时间片。那么如何选择合适的进程/线程运行是一项艺术。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个CPU可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做调度程序(scheduler)的角色存在,它就是做这件事儿的,调度程序使用的算法叫做调度算

    2022年6月4日
    28
  • 使用BeanUtils.copyProperties进行对象之间的属性赋值「建议收藏」

    使用BeanUtils.copyProperties进行对象之间的属性赋值「建议收藏」1、使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值/***对象属性拷贝<br>*将源对象的属性拷贝到目标对象**@paramsource源对象*@paramtarget目标对…

    2022年10月4日
    0
  • ajax实训总结_培训日记

    ajax实训总结_培训日记今天由梁言兵老师为大家讲解ajax,他首先介绍了什么是web2.0及web2.0的应用。ajax框架:客户端框架:DOJO,bindows,Rico服务器端框架:DWR,JSON,buffalo基础库:prototype.js这次讲解的是buffalo框架。buffalo要通过一个注册文件注册Bean对象,buffalo配置文件中的配置项是“对象实例名=完全限定类名”。客户端代码:varEN…

    2022年9月12日
    0
  • filter suction_filter属性

    filter suction_filter属性概要说明       FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如2.1.6、2.1.8。StrutsPrepareAndExecuteFilter名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入;后者表示进行过滤,指doF

    2022年8月16日
    1
  • vs实现用户注册登录_用户注册和登录的实现

    vs实现用户注册登录_用户注册和登录的实现publicstaticUserInfoGetUser(stringname,stringpwd){//填写搜索姓名和密码的sql语句stringsql=string.Format(“select*fromUserInfowhereLoginName='{0}’andPassword='{1}'”,name,pwd);DataTabledt=DBHelper.ExcuteTab.

    2022年8月22日
    5
  • mp3格式音频文件结构解析图_mp3文件结构

    mp3格式音频文件结构解析图_mp3文件结构一、概述Layer-3音频文件,MPEG(MovingPictureExpertsGroup)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码

    2025年6月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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