1. 程式人生 > >集合轉換為陣列

集合轉換為陣列

示例: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

程式碼如下:

		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的反轉
		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;
		}
	}