簡體   English   中英

Java:任何類似於數組作為數組列表的東西?

[英]Java: Anything similar to arrays as list for arrays?

有一種方法可以從varargs獲取List ,即Arrays.asList(o1, o2, o3 etc)

有沒有類似的方法來獲取array 例如像Arrays.asArray(o1, o2, o3 etc)

更新:
o1,o2,o3是不同類型的對象

您可以將構造用作String[] str = new String[] {"a", "b", "c"}

可變參數數組!

MyMethod(Param param, MyObject... args)您可以分配MyObject[] array = args;

List.toArray()可能就是你要找的。 可以在此處找到 Javadoc。

使用這樣的東西:

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);
  }
}

你的意思是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();
}

.

org.apache.commons.lang3.ArrayUtils
T ArrayUtils.toArray(T... t);

沒關系)

請參閱此示例:

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");
    }
}   

您可以使用臨時數組:

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)...);

您可以直接將可變參數分配給相同類型的數組

static void intTest(int... v) {
  int[] arr = v;
}
static void objTest(Object... obj) {
    Object[] arr = obj;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM