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 ... 
随机推荐
- hdoj 5124 lines【线段树+离散化】
			题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5124 题意:给你n段区间,他们有重合的点A,问你重合最多次的点A重合多少次 题解:对区间离散化后,维护 ... 
- 曾经的pc端项目踩到的一些兼容性的坑及其解决方案
			曾经公司pc端项目一直最低兼容到IE7,要求和chrome下浏览效果一致,真心坑坏了我和另外一个小伙伴(另一个小伙伴以前也没处理过兼容问题).不过还好,在这里真心感谢鑫哥博客的详解,从底层原理讲到了具 ... 
- Ios学习
			http://www.cnblogs.com/superhappy/archive/2013/04/23/3038493.html http://www.360doc.com/content/14/0 ... 
- PowerDesigner 企业架构模型 ( EAM )
			PowerDesigner 企业架构模型 ( EAM ) 说明 file工作数据库框架application网络 目录(?)[+] 一. 企业架构模型 说明 EnterpriseArchite ... 
- Windows Phone开发-开发环境和结构
			Windows Phone 7.1的开发工具发布了,一直对WP7很关注,现在终于可以开始学习了.其实09年就学习过silverlight,看过3的SDK文档,当时因为工作,断断续续也没有坚持下来,所以 ... 
- js大小写转换
			toUpperCase 方法返回一个字符串,该字符串中的所有字母都被转化为大写字母 sn.toUpperCase() toLowerCase 方法返回一个字符串,该字符串中的字母被转换为小写字母 sn ... 
- jquery回车提交表单
			jquery回车提交表单,比较方便的功能. 三个事件keydown,keypress,keyup,分别是按下,按着没上抬,上抬键盘 ,所以用keyup. $(document).keyup(funct ... 
- Aizu 2305 Beautiful Currency DP
			Beautiful Currency Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest ... 
- 基于华为Java编程规范的Eclipse checkStyle.xml
			发现项目组成员代码规范存在较大的问题,于是就在华为编程规范的基础上制定了这份checkStyle.xml文档,至于Eclipse怎么安装checkStyle插件以及该插件怎么使用请自行Google之. ... 
- Matplotlib 工具包 使用教程索引
			官方文档链接中: http://matplotlib.org/gallery.html 这里给了非常多演示样例图片.能够查看对应源码,是一个非常好学习途径. matplotlib 函数API :函数A ... 
