Java有個問題就是toArray()方法是Object[],所以總結了幾種Object數組轉成 String 數組的方法:
1、System.arraycopy把一個數組中某一段字節數據放到另一個數組中
//src:源數組;srcPos:源數組要復制的起始位置;dest:目的數組;destPos:目的數組放置的起始位置;length:復制的長度.
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Object[] src = { "A", "B", "C" };
String[] dest = new String[src.length];
System.arraycopy(src, 0, dest, 0, src.length);
2、Arrays.copyOf
//第一個參數表示源數組,第二個表示復制的長度,最后一個參數是指定類型
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType)
//重載方法,同類型
public static <T> T[] copyOf(T[] original, int newLength)
Object[] objectArray = { "A", "B", "C" };
String[] stringArray = Arrays.copyOf(objectArray,objectArray.length, String[].class);
Arrays.copyOf()不僅僅只是拷貝數組中的元素,在拷貝元素時,會創建一個新的數組對象。
而System.arrayCopy只拷貝已經存在數組元素。如果我們看過Arrays.copyOf()的源碼就會知道,該方法的底層還是調用了System.arrayCopyOf()方法。
3、Arrays.asList
這里我們首先將對象數組轉換為對象列表,然后使用toArray(T[])方法將列表轉儲到新分配的String數組中,具體使用參考使用指南
Object[] objectArray = { "A", "B", "C" };
String stringArray[] = Arrays.asList(objectArray).toArray(new String[0]);
//.toArray(new String[objectArray.length]);
4、Java8中Arrays.stream
在Java 8中,我們可以使用Stream API輕松地將對象數組轉換為字符串數組。我們的想法是首先將指走的對象數組 轉換為順序Stream,然后使用toArray()方法將流的元素累積到新的字符串數組中。
Object[] objectArray = { "A", "B", "C" };
String stringArray[] = Arrays.stream(objectArray).toArray(String[]::new);
原文鏈接:https://blog.csdn.net/qq_35988274/article/details/96314818
