programing

arrayList.toArray()가 보다 구체적인 유형을 반환하도록 합니다.

prostudy 2022. 6. 3. 22:32
반응형

arrayList.toArray()가 보다 구체적인 유형을 반환하도록 합니다.

그래서 보통ArrayList.toArray()의 일종을 반환하다Object[]....하지만 아마...Arraylist물건의Custom, 어떻게 하면toArray()돌려보내다Custom[]보다는Object[]?

다음과 같이 합니다.

List<String> list = new ArrayList<String>();

String[] a = list.toArray(new String[0]);

Java6 이전에는 다음과 같이 기술하는 것이 권장되었습니다.

String[] a = list.toArray(new String[list.size()]);

내부 실장에서는 적절한 크기의 어레이가 재할당되기 때문에 미리 실행하는 것이 좋습니다.Java6에서는 빈 배열이 권장되므로 .toArray(새로운 MyClass[0]) 또는 .toArray(새로운 MyClass[myList.size()])를 참조하십시오.

목록이 제대로 입력되지 않은 경우 Array에 전화를 걸기 전에 캐스트를 수행해야 합니다.다음과 같이 합니다.

    List l = new ArrayList<String>();

    String[] a = ((List<String>)l).toArray(new String[l.size()]);

꼭 돌아올 필요는 없다.Object[]예를 들어 다음과 같습니다.

    List<Custom> list = new ArrayList<Custom>();
    list.add(new Custom(1));
    list.add(new Custom(2));

    Custom[] customs = new Custom[list.size()];
    list.toArray(customs);

    for (Custom custom : customs) {
        System.out.println(custom);
    }

여기 있습니다.Custom클래스:-

public class Custom {
    private int i;

    public Custom(int i) {
        this.i = i;
    }

    @Override
    public String toString() {
        return String.valueOf(i);
    }
}

List를 특정 유형의 배열로 변환하는 짧은 버전(예: Long):

Long[] myArray = myList.toArray(Long[]::new);

(Java 11에서 사용 가능)

arrayList.toArray(new Custom[0]);

http://download.oracle.com/javase/7/docs/api/java/util/ArrayList.html#toArray%28java.lang.Object[]%29

 public static <E> E[] arrayListToTypedArray(List<E> list) {

    if (list == null) {
      return null;
    }
    int noItems = list.size();
    if (noItems == 0) {
      return null;
    }

    E[] listAsTypedArray;
    E typeHelper = list.get(0);

    try {
      Object o = Array.newInstance(typeHelper.getClass(), noItems);
      listAsTypedArray = (E[]) o;
      for (int i = 0; i < noItems; i++) {
        Array.set(listAsTypedArray, i, list.get(i));
      }
    } catch (Exception e) {
      return null;
    }

    return listAsTypedArray;
  }

정답을 맞혔는데...이것은 완벽하게 잘 작동하고 있는 것 같다

public int[] test ( int[]b )
{
    ArrayList<Integer> l = new ArrayList<Integer>();
    Object[] returnArrayObject = l.toArray();
    int returnArray[] = new int[returnArrayObject.length];
    for (int i = 0; i < returnArrayObject.length; i++){
         returnArray[i] = (Integer)  returnArrayObject[i];
    }

    return returnArray;
}

언급URL : https://stackoverflow.com/questions/5061640/make-arraylist-toarray-return-more-specific-types

반응형