• java中String,数组,ArrayList三者之间的转换


    ArrayList转为String和数组

    造一个元素为Integer的ArrayList 为list_int
    造一个元素为String 的 ArrayList 为list_str

    ArrayList list_int = new ArrayList<Integer>(); //Integer的List
    list_int.add(1);
    list_int.add(3);
    list_int.add(5);
    list_int.add(9);
    
    ArrayList<String> list_str = new ArrayList<String>(); //String的List
    list_str.add("xiaoling");
    list_str.add("xiaoling");

    ​ArrayList -> String

    方法1:使用toString

    • 优势:无论元素是什么类型,只要元素本身写好了toString方法,都可以用
    • 劣质:这里是因为List都已经把toString封装好了,但是它前后带了中括号,且分割使用的是逗号加空格,因此需要进行一些处理


    list_str同样可以使用该方法连接,这里只展示list_int

    String toString = list_int.toString();  //ArrayList转换为String,带中括号的
    String substring = toString.substring(1, toString.length() - 1);//去除中括号。小心java的substring是左闭右开的
    String result = substring.replaceAll("\s", "");//去除所有的空字符
    System.out.println(result);//1,3,5,9

    方法2:使用String.join(连接符,CharSequence对象)

    连接各个元素同时指定连接符

    • ​优势:手动指定了元素之间的连接符
    • 劣势:只能用于元素为CharSequence的List对象

    元素为String的List请使用该方法

    String str = String.join(",", list_str);//将list_str中的元素使用逗号连接
    System.out.println(str);//xiao,ling

    ArrayList -> 数组

    ArrayList的toArray方法很神奇的点在于,它将元素放入了参数数组中,但是又返回了一个数组,并且似乎返回的数组只能是Object[]类型.(使用自定义的数组就好)

    Integer[] ints = new Integer[list_int.size()];//先造一个长度相同的Integer数组
    Object[] objects = list_int.<Integer>toArray(ints);// 使用toArray(T[] a) 方法将List的所有元素放入a数组中
    for (Integer i : ints){
        System.out.print(i+"	");//1	3	5	9	
    }
    System.out.println();
    //for (Object i : objects){  //打印结果显示返回的数组和自定义的数组内容是一样的
    //    System.out.print(i+"	");//1	3	5	9	
    //}

    String转为ArrayList和数组

    定义两个字符串

    String str_int = "1,3,5,9";
    String str_str = "jiang,chen,xiao,ling";

    String -> 数组

    将str_int转换为数组,问题在于无法直接转成Integer[],需要新建一个Integer[],然后遍历String[],将值单独转为Integer再放入Integer[]

    String[] split = str_int.split(","); //转为String[]
    
    //再将String[]转为Integer[]
    Integer[] ints1 = new Integer[split.length];
    for (int i = 0; i < ints1.length; i++) {
        ints1[i] = Integer.parseInt(split[i]);
    }
    
    System.out.println(Arrays.asList(ints1)); //[1, 3, 5, 9]

    String -> List

    先转为数组,在转为List

    ArrayList arrayList = new ArrayList(Arrays.asList(str_int.split(",")));
    System.out.println(arrayList);  //[1, 3, 5, 9]

    数组转换为String和ArrayList

    造两个数组

    Integer[] arr_int = {1,3,7,11};
    String[] arr_str = {"xiao","ling"};

    数组 ->String

    //先转为Arrays.ArrayList,再使用它的toString方法
    String s = Arrays.asList(str_int).toString();
    System.out.println(s);
    
    //如果是字符串类型则直接
    String join = String.join(",", str_str);
    System.out.println(join);

    数组 -> List

    Arrays.asList(数组) 返回的是java.util.Arrays.ArrayList,并不是java.util.ArrayList,它是一个不可变List!需要再将其作为参数,调用java.util.ArrayList构造器才能获取一个正常的可变ArrayList!

    ArrayList list1 = new ArrayList(Arrays.asList(arr_int));
    System.out.println(list1);
    
    ArrayList list2 = new ArrayList(Arrays.asList(arr_str));
    System.out.println(list2);
  • 相关阅读:
    C#结构体指针的定义及使用详解
    C# out和ref关键字
    CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
    深圳职位:替朋友招聘biztalk的技术人员 无为而为
    微软出最新SQL Server 2005 累积修补程序包(版本 9.0.2153)(200684),这是SP1之后的更新 无为而为
    微软Visual Studio 2005 SDK version 3.0 发布了,TFS扩展的开发人员/DSL/VSTS Test都应该关注 无为而为
    好东西,将你的英文版TFS变为中文版?:Visual Studio 2005 Team Foundation Server 语言更改包 无为而为
    Analysis Service计算[期间增长率]的若干注意 无为而为
    亲身体验:更改 Team Foundation Server 部署的语言版本是一个复杂耗时的过程 无为而为
    各大门户调查:鄙视新浪,将博士伦的广告挂在热点新闻中间好几天了,把大众当傻瓜 无为而为
  • 原文地址:https://www.cnblogs.com/xiadongqing/p/15203068.html
Copyright © 2020-2023  润新知