Java: Что-нибудь похожее на массивы как список для массивов? - PullRequest
0 голосов
/ 28 февраля 2012

Есть способ получить List от varargs, т.е. Arrays.asList(o1, o2, o3 etc)

Есть ли подобный способ получить array? Например. что-то вроде Arrays.asArray(o1, o2, o3 etc)

Обновление:
o1,o2,o3 это разные типы объектов

Ответы [ 8 ]

3 голосов
/ 28 февраля 2012

Вы можете использовать конструкции как String[] str = new String[] {"a", "b", "c"}

2 голосов
/ 28 февраля 2012

переменных являются массивом!

в MyMethod(Param param, MyObject... args) можно назначить MyObject[] array = args;

1 голос
/ 28 февраля 2012

Вы имеете в виду varargs для массива? Просто используйте его как массив, потому что это уже массив.

public void t(Object obj...) {
  Object obj0 = obj[0];
}

Или вы сказали про массив из статического списка? Тогда используйте конструкцию инициализации как Object objs = new Object[] {new Object, new Object, Object}.

Кроме того, от List<T> к массиву используется метод List.toArray().

Или из varargs через List в массив, просто для удовольствия:

public void t(Object obj...) {
 Object[] a = Arrays.asList(obj).toArray();
 // or
 Object[] b = Arrays.asList(new Object, new Object).toArray();
}

.

1 голос
/ 28 февраля 2012

Используйте что-то вроде этого:

Element[] array = new Element[] { new Element(1),new Element(2),new Element(3) };

Или вы можете просто создать список и преобразовать его в массив. Вот довольно хороший пример, который я получил от java2s:

import java.util.ArrayList;
import java.util.List;

/** List to array */
public class ToArray {
  public static void main(String[] args) {
    List list = new ArrayList();
    list.add("Blobbo");
    list.add("Cracked");
    list.add("Dumbo");
    // list.add(new Date()); // Don't mix and match!

    // Convert a collection to Object[], which can store objects
    // of any type.
    Object[] ol = list.toArray();
    System.out.println("Array of Object has length " + ol.length);

    // This would throw an ArrayStoreException if the line
    // "list.add(new Date())" above were uncommented.
    String[] sl = (String[]) list.toArray(new String[0]);
    System.out.println("Array of String has length " + sl.length);
  }
}
1 голос
/ 28 февраля 2012

List.toArray() может быть то, что вы ищете.Javadoc можно найти здесь .

0 голосов
/ 28 февраля 2012

Вы можете назначить varargs для одного и того же массива типов напрямую

static void intTest(int... v) {
  int[] arr = v;
}
static void objTest(Object... obj) {
    Object[] arr = obj;
 }
0 голосов
/ 28 февраля 2012

Вы можете использовать специальный массив:

MyType[] arr = new MyType[]{new MyType(1), new MyType(2)...};  

или создать небольшой хитрый метод, такой как:

public static <T> T[] createArray(T... args) {
  return args;
}  

Затем используйте его так:

MyType[] arr = createArray(new MyType(1), new MyType(2)...);
0 голосов
/ 28 февраля 2012

См. Этот пример:

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("e");
    list.add("f");
    String[] array = list.toArray(new String[0]); // Collection to array
    for (int i = 0; i < array.length; ++i) {
        String contents = array[i];
        System.out.print(contents+"\t");
    }
    System.out.println();
    List<String> list2 = Arrays.asList(array); // Array back to Collection
    for (String s2 : list2) {
        String s3 = s2;
        System.out.print(s3+"\t");
    }
}   
...