string[] 和 arraylist互转及问题解决
1,String 数组转成 list<String>
String[] s={"1","2","3","5","6"};
List<String> listA = Arrays.asList(s);
String 数组在转成 list<String>后, 直接对该list进行操作, 会出异常,例如:
public static void main(String[] args) {
String[] s={"1","2","3","5","6"};
List<String> listA = Arrays.asList(s);
listA.add(3,"4");
for(String temp:listA){
System.out.println(temp);
}
}
运行时会抛出如下异常:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
原因分析:
public static void main(String[] args) {
String[] s={"1","2","3","5","6"};
List<String> listA = Arrays.asList(s);
List<String> listB = new ArrayList<String>(listA);
listB.add(3,"4");
for(String temp:listB){
System.out.println(temp);
}
}
运行结果:输出 1 2 3 4 5 6
PS: 这里顺便说明一下arraylist 的 remove() add() 特点
1)arraylist add时, 指定了index添加时,原本该index上的位置不会被删除, 而是从index位置上的数据都向右移。
2)arraylist delete时, 删除后, 该位置后面的所有数据自动向左移,所以遍历的时候, index需要-1 才不会漏掉, 或者直接从倒序遍历,
例如如下代码:
public static void main(String[] args) {
String[] s={"1","2","2","3","5","6"};
List<String> listA = Arrays.asList(s);
List<String> listB = new ArrayList<String>(listA);
for(int i=0;i<listB.size();i++){
if (listB.get(i).equals("2")){
listB.remove(i);
}
}
for(String temp:listB){
System.out.println(temp);
}
}
运行结果:输出 1 2 3 4 5 6 , 该原list index=2位置漏掉遍历,所以得到结果不符合预期
改成如下:
public static void main(String[] args) {
String[] s={"1","2","2","3","5","6"};
List<String> listA = Arrays.asList(s);
List<String> listB = new ArrayList<String>(listA);
//1. Should reduce 1 once remove
for(int i=1;i<listB.size();i++){
if (listB.get(i).equals("2")){
listB.remove(i);
i--;
}
}
/**
* 2. reverse traversal
for(int i=listB.size()-1;i>=0;i--){
if (listB.get(i).equals("2")){
listB.remove(i);
}
}**/
for(String temp:listB){
System.out.println(temp);
}
}
运行结果:输出 1 3 4 5 6
2, list<String>转成String 数组
String[] b = list.toArray(new String[list.size()]);
3,String数组直接转成string输出
Arrays.toString(数组名)
string[] 和 arraylist互转及问题解决的更多相关文章
- c++ string 与 char 互转 以及base64
c++ string 与 char 互转 很简单如下 ] = {'A','B','C','D','E'}; printf("%s\n",bts); //char to string ...
- String[]和ArrayList和LinkedList区别
String[]和ArrayList和LinkedList区别 参考文档如下: http://www.blogjava.net/flysky19/articles/92775.html http:// ...
- 将ArrayList<HashMap<String, String>>转为ArrayList<Bundle>类型的解决方案
Bundle是一种利用键值对存储的数据格式,而我们在程序中通常利用HashMap存储数据.在开发中,通过Http请求得到JSONArray类型的返回值,我选择利用ArrayList<HashMa ...
- string与wstring互转
string与wstring互转 C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404 ...
- 下载STRING数据库检索互作关系结果为空,但是在STRING网站却能检索出互作关系,为什么呢???关键词用的是蛋白ID(ENSP开头)
首先介绍下两种方法: 一.本地分析 1.在STRING数据库下载人的互作文件,如下图,第一个文件 https://string-db.org/cgi/download.pl?sessionId=HGr ...
- String、String[]、ArrayList<String>之间的转换
1. ArrayList<String> 转换为 String[]: ArrayList<String> list = new ArrayList<>(); li ...
- Go语言网络通信---string与int互转,int64与[]byte互转,int直接互转,string与[]byte互转
string与int互转 #string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt( ...
- List<String> 和 ArrayList<String>的区别
最近对这两个问题比较懵逼,关于List和ArrayList.List<String> list = new ArrayList<String>(); 好了,先搞明白List 和 ...
- SONObjetc和String Map Bean互转,JSONArray和String List互转
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...
随机推荐
- ASP.NET奇葩说
1.form表单 在asp.net中(即runat="server"特性时)method默认值为post 在html中默认是get. 2.Web应用程序项目和网站项目:前者后台文 ...
- linux教程:[4]配置Tomcat开机启动
http://jingyan.baidu.com/article/6525d4b1382f0aac7d2e9421.html 方法/步骤 1 请自行下载安装配置tomcat的服务器环境 本经验仅仅介绍 ...
- Castle IOC FOR MVC 使用方法
Castle Web.API 使用方法 一.创建 WindsorActivator 继承 IHttpControllerActivator public class WindsorActivator ...
- jquery回车提交表单
jquery回车提交表单,比较方便的功能. 三个事件keydown,keypress,keyup,分别是按下,按着没上抬,上抬键盘 ,所以用keyup. $(document).keyup(funct ...
- centos yum安装mysql
查看有没有安装包 # yum list mysql 安装mysql客户端 # yum install mysql # yum list mysql-server 安装mysql 服务器端 # yum ...
- 字符编码的故事(ASCII,ANSI,Unicode,Utf-8区别)转载
http://www.imkevinyang.com/2009/02/字符编解码的故事(ascii,ansi,unicode,utf-8区别).html 很久很久以前,有一群人,他们决定用8个可以开合 ...
- [Effective C++ --015]在资源管理类中提供对原始资源的访问
引言 资源管理类是防止资源泄漏的有力武器,但是许多APIs直接指涉资源,除非你发誓永不使用这样的APIs,否则只得绕过资源管理对象(resource-managing objects)直接访问原始资源 ...
- QT连接多种数据库f方法及测试
QT提供了对多种数据库的访问支持,对SQL Server也可以通过ODBC来进行访问.要想顺利访问SQL Server. 首先要保证以下几点:1. QT编译时已经编译了QtSql2. 编译了ODBC插 ...
- php笔记01:php基本语法格式
1. <?php ....... ?> 2. <script laugnage="php"> ....... </script> 3. < ...
- Android_Spinner_SimpleAdapter
xml布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...