```java
public class ExampleMethod6 {
public static void main(String[] args) {
/*
* 以下兩個承載著不同型別的 list 都呼叫了同一個方法進行反轉。
*/
List<String> list1 = new ArrayList<String>();
list1.add("str1");
list1.add("str2");
list1.add("str3");
list1 = reverseList(list1); //[str3, str2, str1]
reverseList2(list1); //[str1, str2, str3]
List<Integer> list2 = new ArrayList<Integer>();
list2.add(1);
list2.add(2);
list2.add(3);
list2 = reverseList(list2); //[3, 2, 1]
reverseList2(list2); //[1, 2, 3]
/*
* 同樣的,以下兩個不同形態的陣列呼叫相同的方法。
* 也是可以正常的印出內容。
*/
String[] strArr = new String[] { "1", "2", "3" };
printArray(strArr);
Integer[] intArr = new Integer[] { 1, 2, 3 };
printArray(intArr);
}
//直接對 list 操作,所以不需要 return 物件
public static <T> void reverseList2(List<T> list) {
int size = list.size();
for (int i = 0; i < size / 2; i++) {
int j = size - 1 - i;
T temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
//創造一個新的 list 去承接結果,所以回傳後也需要有變數去接
public static <T> List<T> reverseList(List<T> list) {
List<T> reversed = new ArrayList<>();
for (int i = list.size() - 1; i >= 0; i--) {
reversed.add(list.get(i));
}
return reversed;
}
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}
}
```