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 ...
 
随机推荐
- [OC Foundation框架 - 11] NSMutableDictionary
			
void dicUse() { NSMutableDictionary *dic = [NSMutableDictionary dictionary]; Student *stu1 = [Stud ...
 - 一个简单的创建圆角图像的UIImage扩展实现
			
- (UIImage *)roundedCornerImageWithCornerRadius:(CGFloat)cornerRadius { CGFloat w = self.size.width; ...
 - Google maps library的使用
			
公司的项目中用到了google地图API, 使用Google API开发就会用到Marker, 用来在google 地图上标注位置 但是google marker使用过程中也有个问题,就是如果在goo ...
 - Remastersys打包你自己的ubuntu成iso文件,保存原来的所有配置
			
你是不是辛辛苦苦地配好了ubuntu结果不久又重装,然后又重新配置很久呢? 笔者好不容易配置好了torch,但是换硬盘,于是就想到了将ubuntu打包成iso文件,下次直接安装,然后配置好的东西都搬过 ...
 - Protobuf-net学习笔记
			
对于Socket应用来说,如何序列化和反序列化消息一直是比较头痛的问题,C#提供了自动序列化的功能(类似AS3中的AMF),但是唯一的缺点就是前后端都必须是C#实现,如果前后端语言不一致该怎么办? G ...
 - LocalDB 的创建与迁移
			
首先创建对应的对象 public class Movie { public int ID { get; set; } public string Title { get; set; } public ...
 - 关于Hadoop结合RDBMS应用的一些思考
			
最近一段时间一直在从事和hadoop相关的工作,主要是技术内容学习.安装配置优化以及一些框架结构的设计.在此期间,我对于RDBMS和Hadoop的结合应用有了一些自己的看法,写出来大家共同探讨一下. ...
 - Tomcat无法部署项目
			
设置项目的Jdk,compire version 增加java EE 如果有必要,现在项目根目录下放置.mymetadata文件 <?xml version="1.0" en ...
 - 把sublime添加到右键菜单(转)
			
sublime text是前端利器,为了方便,我们把它加入到win7系统的右键菜单(xp不支持) 保存为bat文件,放入sublimetext安装文件夹与sublime_text同级,双击执行即可. ...
 - 使用python编写批量卸载android应用的脚本
			
该脚本的功能是卸载android手机中安装的所有第三方应用,主要是使用adb shell pm.adb uninstall 命令,所以使用的前提是需要配好adb的环境变量,下面上代码: #!/usr/ ...