java 各类型数据结构转换 个人总结

【1】8种基本类型 -> 字符串(String)
1.(推荐)基本类型的变量名+"" 最简单的方法(工作中常用)    strL = l + "";
2.String类的静态方法String.valueOf(基本类型参数)            strL = String.valueOf(l);
static String valueOf(int i) :返回int参数(基本类型)的字符串表示形式。
【3】8种包装类型 -> 字符串(String)
1.包装类型的对象名+""                                         strL = l1 + "";
2.(推荐)String类的静态方法String.valueOf(包装类型对象名)                    strL = String.valueOf(l1);
static String valueOf(Integer in) :返回Integer参数(基本类型)的字符串表示形式。
3.(推荐)包装类型的对象名.toString() 或者XXX.toString(x),是Object类的toString()重载    strL = l1.toString();    String strCh2 = new Character('u').toString();
static String toString(int i) :返回一个表示指定整数的String对象。
【2】字符串(String)->8种基本类型
1. (推荐)使用包装类的静态方法  XXX.parseXXX("字符串");                                        long l_ = Long.parseLong(strL);
2. 包装类的 XXX.ValueOf("字符串")方法【借助于自动拆箱】, String转char例外(直接用charAt),此时无需借助自动拆箱。    long l__ = Long.valueOf(strL);
【4】字符串(String)->8种包装类型
1.  (推荐)包装类的 XXX.ValueOf("字符串")方法    String转Character例外,要用charAt并借助自动拆箱。                  Long l1_ = Long.valueOf(strL);
2. 使用包装类的静态方法  XXX.parseXXX("字符串");【借助于自动装箱】,String转char例外(直接用charAt),需借助自动装箱。Long l1__ = Long.parseLong(strL);
【5】数组转String
1.  StringUtils.join(strings)        StringUtils.join(ArrayUtils.toObject(ints))        StringUtils.join(ints,',')【注:如果第一个arg为基本类型/封装类型数组,第二个arg用char型/字符串型分隔符】       StringUtils.join("a", "b", "ddd")) 以上,将数组组合后的String通过返回值获取
依赖org.apache.commons.lang3   特殊:StringUtils.join(null, "", "a"));得到的返回值是"a"
2.  流操作
Arrays.stream(longs).mapToObj(String::valueOf).collect(Collectors.joining())        Arrays.stream(integers).map(String::valueOf).collect(Collectors.joining("\\"))组合后的String通过返回值获取
StringJoiner sj = new StringJoiner("&+");
IntStream.of(ints).forEach(ele -> sj.add(String.valueOf(ele)));
String finalString =  sj.toString();组合后的String通过sj.toString获取
3.  字符串数组转字符串(String)时,String.join,适用于String,StringBuilder,StringBuffer等实现了charSequence接口类型的集合或数组,Integer、int等基本类型及其封装类型数组不可以
String.join("", strings1)
4.  字符数组、字节数组,转String,用String的构造方法
String strData = new String(charData)        String strData1 = new String(new char[]{'a','e','d'})                String byteString = new String(bytes1)        String byteString2 = new String(bytes1,2,4)//利用bytes1从索引下标2开始,长度为4的部分生成String
扩展:
(1).  String的构造函数,除了以上两种类型的数组,还有StringBuilder ,StringBuffer
(2).  String byteString1 = new String(bytes1, StandardCharsets.UTF_8);//注意,第二个参数要用StandardCharsets.UTF_8代替"utf-8"
        byte[] bytes_rec = byteString1.getBytes(StandardCharsets.UTF_8);//注意,参数要用StandardCharsets.UTF_8代替"utf-8"
5.  字符串数组 转 String,for循环+append或者"+"
 
6.  字符数组转String,用String.valueOf  
 String strChs = String.valueOf(new char[]{'s','o','s'});
扩展:
将数组转出带有","和"[","]" 的String格式。Arrays.toString(xxx[] a) 或 ArrayUtils.toString(object, stringIfNull) 二者数组参数类型皆可为booblean byte char double float int long short Object
String strNums = Arrays.toString(nums)
ArrayUtils.toString(arr2)        ArrayUtils.toString(arr2, "")  返回值得到需要的String,当第一个参数是null时,返回第二个参数,参见下行
特殊:ArrayUtils.toString(null, "Now the first arg is null,output XBl")  
【6】字符串String 转 “字符串”数组或“字符”数组或“字节”数组
1.  有分隔符的字符串转为“字符串数组” , xxx.split(),  xxx为字符串对象名
String[] strArr2 = str2.split("\\.")            用来转换带有"."分隔的字符串为字符串数组,注意要用2个"\"来对需要转义的字符进行转义,可以用“|”对多个分隔符进行连接【例如,str4.split("and|or")】
2.  String转为字符数组  xxx.toCharArray  该字符数组中存放了当前字符串中的所有字符
char[] chars6 = str6.toCharArray()    为得到转换后的数组长度,可以加上.length  例如:str5.toCharArray().length
3.  String转byte数组。xxx.getBytes()    每一个byte元素的取值是对应字符的ascii码
byte[] bytes6 = str6.getBytes()
【7】非char的基本类型 转char
【8】集合 转 String
1.  String.join  由于该方法的参数只能为继承了CharSequence的集合,所以当集合的元素类型为Integer Long Character等包装类时,不可。
String.join("-", list1)        返回值获取集合转换获得的String
2.  stream的Collectors.joining
String strList = list.stream().collect(Collectors.joining("+"))
【12】字符串(String) 转 集合
【9】集合List 转 数组  
1.(推荐)xxList.toArray(xxStrings) 
        String[] strings8 = new String[stringList3.size()];
        stringList3.toArray(strings8);
2.  for循环

【10】数组  转  集合 
1.(不推荐) Arrays.asList会返回java.util.Arrays.ArrayList,该类有set,get,contains方法,但无添加、移除元素方法。因为该类的大小(size)是固定的
        String[] strs = {"1", "100", "10000"};
        List<String> strings6 = Arrays.asList(strs);
2. 转换得到的集合,可以增删操作
List<String> stringList = new ArrayList<String>(Arrays.asList(strs))    其中,strs为String[] 类型
3. 相比于1. ,更高效的代码
        List<String> stringList1 = new ArrayList<String>(strs.length);        其中,strs为String[] 类型
        Collections.addAll(stringList1, strs);
【11】 数组 转 数组     
1.  字符串数组 转 long/int/Long/Integer等数组
long[] str2lon = (long[])ConvertUtils.convert(strs, long.class);    第二个参数支持int.class/long.class/Integer.class/Long.class等基本类型/封装类型等.class
2.   long/int/Long/Integer等数组 转 字符串数组
String[] lon2Str = (String[])ConvertUtils.convert(str2lon, String[].class);        第一个参数是int[] long[] Integer[] Long[]等类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值