一、Java中字符串与数组之间的转化
1、字符串->数组
- (1)转换成字符数组,java String 类中的toCharArray()方法将字符串转换为字符数组
String str = "123abc";
char[] arr = str.toCharArray(); // char数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 输出1 2 3 a b c
}
- (2)转换成字符串数组
如果字符串有空格,可以利用String.split()方法进行分割字符串,返回一个数组
String str = "123 abc";
String[] arr = str.split("");
for (int i = 0; i < arr.length; i++) { // String数组
System.out.print(arr[i]); // 输出 1 2 3 a b c
}
使用 split() 方法注意如下:
- 如果用“.”或“|”作为分隔的话,必须是如下写法,String.split("\\.") 或 String.split("\\|"),这样才能正确的分隔开,不能用 String.split(".") 或 String.split("|")。
- 如果在一个字符串中有多个分隔符,可以用“|”作为连字符,如把“abc.123%efg”分割成abc,123,efg,可以这样写split(“\\.|%”);
- (3)转换成byte数组,直接用getBytes()方法即可
String str = "123abc" ;
byte [] arr = str.getBytes();
2、数组->字符串
- (1)char字符数组转换成字符串,使用String.copyValueOf(charArray)即可。也可以直接把char数组作为String对象初始化的函数生成或者使用String.valueOf(charArray)
char[] arr = { 'a', 'b', 'c' };
String string = String.copyValueOf(arr);
System.out.println(string); // 输出abc
String s1=new String(arr);
System.out.println(s1);
System.out.println("String.valueOf"+String.valueOf(arr));
- (2)String字符串数组转换成字符串,先创建StringBuffer对象,然后append追加数组元素,在toString()即可
String[] arr = { "123", "abc" };
StringBuffer sb = new StringBuffer();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]); // String并不拥有append方法,所以借助 StringBuffer
}
String sb1 = sb.toString();
System.out.println(sb1); // 输出123abc
二、数组与List之间的转换
1、数组->List
- (1)可以直接使用Arrays类中的asList()方法,将数组转化为List,但是List不像ArrayList类一样,不能进行添加和移除操作,因为ArrayList类继承了List接口,并且重写了里面的抽象方法
String[] array = {"123","abc","xyz","666"};
List<String> list = Arrays.asList(array);
System.out.println("数组转化为列表:");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
输出结果:
数组转化为列表:
123 abc xyz 666
- (2)也可以通过向ArrayList类中添加数组元素实现:
String[] array = {"123","456","abc","666"};
ArrayList<String> list = new ArrayList<>();
System.out.println("数组转化为列表:");
for (int i = 0; i < array.length; i++) {
list.add(array[i]);
System.out.print(list.get(i)+" ");
}
list.remove(3); //删除索引为3的值
System.out.println("移除索引为3的值后,列表为:");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
}
输出结果:
数组转化为列表:
123 456 abc 666
移除索引为3的值后,列表为:
123 456 abc
2、List->数组
- (1)List,ArrayList中都有toArray()方法,可以将链表转化为数组,这里需要注意的是:toArray()方法内的如果没有参数返回的是object类型数组,如果要为string类型,则需要加:new String[list.size()];
ArrayList<String> list = new ArrayList<>();
list.add("abc");
list.add("123");
list.add("456");
String[] array = list.toArray(new String[list.size()]);
System.out.println("将列表转化为数组:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]+" ");
}
输出结果:
将列表转化为数组:
abc 123 456
参考文章:https://blog.youkuaiyun.com/u014800380/article/details/52994913