集合轉換為陣列
阿新 • • 發佈:2019-01-02
示例:ArrayList<Character> list轉換成Character陣列
1、如果使用(Character[])list.toArray();//強制轉換,則會報型別轉換異常
2、使用第二個方法list.toArray(T[ ] a);//即可
示例程式碼:
Character[] characters = list.toArray(new Character[list.size()]);
事情是這樣子的:
需要反轉一段字串:
String str = "Welcome to Beijing ( the-weather ) !";
一、思路:使用集合的反轉
1、String->char[ ]
2、因集合中必須存放物件,所以需要將char[]->Character[ ],使用for迴圈逐個字元copy;或者直接將每個字元逐個存入集合中(這裡演示後者)
3、使用集合工具Collections.reverse(list);進行反轉工作
4、將集合轉換成陣列
5、使用StringBuilder構建String
程式碼如下:
二、更簡單的實現:使用StringBuilder的反轉String str = "Welcome to Beijing ( the-weather ) !"; //字串轉為字元陣列 char[] array = str.toCharArray(); //陣列轉為集合 List<Character> list = new ArrayList<Character>(); for (int i = 0; i < array.length; i++) { list.add(array[i]); } //反轉 Collections.reverse(list); //集合轉為陣列 Character[] characters = list.toArray(new Character[list.size()]); //構建反轉後的字串 StringBuilder sb = new StringBuilder(); for (Character character : list) { sb.append(character); } System.out.println(sb.toString());
StringBuilder sb = new StringBuilder(str);
sb.reverse();
三、轉為char[ ]後,不用javaAPI,直接上演算法,從兩頭往中間擠著交換前後的位置
private static void reverse(char[] array) { for (int low = 0, high = array.length-1; low < high; low++, high--) { //交換位置 char temp = array[low]; array[low] = array[high]; array[high] = temp; } }