【各种转换】数组转换成字符串,集合转换成字符串,字符串转集合
由于在⼯作中经常⽤到各种类型的互相转换,这⾥总结⼀下:
1. 基本类型转字符串:
基本数据类型.toString 最快
String.valueOf() 次之
+" " 最慢
其中long类型没有.toString⽅法,包装类型Long有。
2. 将list集合转化成string数组:⽤toArray
List<String> blist=new ArrayList<String>();//创建⼀个list集合
String [] a=new String[blist.size()];//创建string类型数组
/
/遍历输出string数组
Arrays.stream(a).forEach(System.out::println);
3. String数组转集合
String[]arr =new String[]{"123","345","456"};
//转为ArrayList
List<String> list =new ArrayList<>(Arrays.asList(arr));
list.add("567");
System.out.println(list);
如果使⽤下⾯这种转换需要注意了,这样的是不具备增删的功能的
String[]arr =new String[]{"123","345","456"};
List<String> list = Arrays.asList(arr);
System.out.println(list);
使⽤这种⽅式转来的list的类型是Arrays的⼀个内部类,拥有的⽅法数量有限,不具备add 、remove等的常⽤操作。(虽然这个内部类也叫ArrayList)
list.add("567");//会报UnsupportedOperationException异常
若要经转化后有增加删除等操作,可转为ArrayList或其他拥有完整操作的list类。
注意:对于int[]数组不能直接这样做,因为asList()⽅法的参数必须是对象。应该先把int[]转化为Integer[]。对于其他primitive类型的数组也是如此,必须先转换成相应的wrapper类型数组。
int[] numbers ={7,7,8,9,10,8,8,9,6,5,4};
int size = numbers.length;
Integer[] array =new Integer[size];
for(int i =0; i < numbers.length; i++){
Integer integer = numbers[i];
array[i]= integer;
}
List list = Arrays.asList(array);
4. String数组转换成字符串:使⽤ Apache Commons 组件中的 commons-lang3.jar包
String [] a={"abc","d","ef"};
String str=StringUtils.join(a,",")// 使⽤逗号隔开
join⽅法的源码:
/**
* <p>Joins the elements of the provided array into a single String
* containing the provided list of elements.</p>
*
* <p>No delimiter is added before or after the list.
* Null objects or empty strings within the array are represented by
* empty strings.</p>
*
* <pre>
* StringUtils.join(null, *)              = null
* StringUtils.join([], *)                = ""
* StringUtils.join([null], *)            = ""
* StringUtils.join(["a", "b", "c"], ';')  = "a;b;c"
* StringUtils.join(["a", "b", "c"], null) = "abc"
* StringUtils.join([null, "", "a"], ';')  = ";;a"
* </pre>
*
* @param array  the array of values to join together, may be null
* @param separator  the separator character to use
* @return the joined String, {@code null} if null array input
* @since 2.0
*/
public static String join(final Object[] array,final char separator){
if(array == null){
return null;
}
return join(array, separator,0, array.length);
}
可以看到join⽅法中的第⼆个参数分隔符,即是数组转字符串时,使⽤分隔符隔开。
5. String转换成byte[]或者byte[]转换成String
//Original String
String string ="hello world";
//Convert to byte[]
byte[] bytes = Bytes();//或者getBytes("utf-8")
//Convert back to String
String s =new String(bytes);
6. Date,Long,String三种类型间的互相转化
1. Date转long类型
// 可直接返回当前时间的毫秒数
long now = System.currentTimeMillis();
System.out.println("now:"+ now);
// 指定date返回long类型
Date date =new Date();
long time = Time();
System.out.println("time:"+ time);
/*
Output:
now:1550375633383
time:1550375935743
*/
2. 将date型的数据转换成特定的String型字符串
Date date =new Date();
System.out.println(date);
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(date);
System.out.println(format);
/*
Output:
Sun Feb 17 11:49:27 CST 2019
2019-02-17 11:49:27
*/
3. 将⽇期字符串转为Date类型,使⽤simpleDateFormat.parse(dateStr)
String dateStr ="2019-02-17 11:58:55";
try{
Date parse = simpleDateFormat.parse(dateStr);
System.out.println(parse);
数组转换成字符串}catch(ParseException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
/
*
Output:
Sun Feb 17 11:58:55 CST 2019
*/
4. 字符串转为long类型
String string ="1550376176762";
long parseLong = Long.parseLong(string);
System.out.println(parseLong);
5. long转字符串,使⽤String()最快
String string2 = String(parseLong);
System.out.println(string2);
6. long转Date
String string ="1550376176762";
long parseLong = Long.parseLong(string);
Date date3 =new Date(parseLong);
System.out.println("date3:"+ date3);
7. Array、ArrayList和Vector的区别
a. Array是表态连续分配的⼀⽚内存区域,与ArrayList相⽐、不能动态改变⼤⼩,通过Arrays进⾏sort、binarySearch等操作;
b. ArrayList是继承⾃List的可动态改变⼤⼩的数组,和Array⼀样要求连续分配,内部封闭了⼀个Object数组,许多⽅法直接调⽤Arrays 实现;
c. Vector和ArrayList功能基本⼀致,但Vector是线程安全的。
效率由⾼到低依次为:Array、ArrayList、Vector。
8. String 和List 的互相转换
List<String > 转换成 String :
迭代List的每个⼦项,将他们⽤“,”隔开,拼接最好是要⽤StringBuilder 或者StringBuffer
来完成,当然"String+=" 也是可以的:
public static String listToString(List<String> list){
if(list==null){
return null;
}
StringBuilder result =new StringBuilder();
boolean first =true;
//第⼀个前⾯不拼接","
for(String string :list){
if(first){
first=false;
}else{
result.append(",");
}
result.append(string);
}
String();
}
String 转换成List<String> :
⾸先String类没有提供直接转换出List的功能;
String提供了⼀个根据字符来分割字符串的功能,但是分割的结果是String[]类型的,如果我们需要的是String[]类型,那么正好直接使⽤,
需要List可以使⽤如下的⽅法:
public static List<String>stringToList(String strs){
String str[]= strs.split(",");
return Arrays.asList(str);
}
更简洁的list<String>转String
<(",").join(list);
public static void main(String[] args){
List<String> name =new ArrayList<>(Arrays.asList("xxx","yyy","zzz"));
name.add("aaa");
name.add("bbb");
String nameStr = (",").join(name);
System.out.println(nameStr);//xxx,yyy,zzz,aaa,bbb
List<String> dogs =new ArrayList<String>();
dogs.add("Aigi");
dogs.add("Spitz");
dogs.add("Mastiff");
dogs.add("Finnish Spitz");
dogs.add("Briard");
String dogStr = (",").join(name);
System.out.println(dogStr);//Aigi,Spitz,Mastiff,Finnish Spitz,Briard
String str[]= dogStr.split(",");
System.out.println(Arrays.asList(str));//[Aigi, Spitz, Mastiff, Finnish Spitz, Briard]
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。