将数组转换为ArrayList

这个问题在这里已经有了答案:

  • 从数组32中创建ArrayList答案

  • 作为该行将是的ArrayList

    import java.util.ArrayList;
    ...
    ArrayList<Card> hand = new ArrayList<Card>();
    

    要使用ArrayList你需要做的

    hand.get(i); //gets the element at position i 
    hand.add(obj); //adds the obj to the end of the list
    hand.remove(i); //removes the element at position i
    hand.add(i, obj); //adds the obj at the specified index
    hand.set(i, obj); //overwrites the object at i with the new obj
    

    另请阅读http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html


    这会给你一个清单。

    List<Card> cardsList = Arrays.asList(hand);
    

    如果你想要一个数组列表,你可以做

    ArrayList<Card> cardsList = new ArrayList<Card>(Arrays.asList(hand));
    

    如果你可以,使用番石榴

    值得指出番石榴的方式,这大大简化了这些恶作剧:

    用法

    对于不可变列表

    使用ImmutableList类及其of()copyOf()工厂方法(元素不能为null):

    List<String> il = ImmutableList.of("string", "elements");  // from varargs
    List<String> il = ImmutableList.copyOf(aStringArray);      // from array
    

    对于一个可变列表

    使用Lists类及其newArrayList()工厂方法:

    List<String> l1 = Lists.newArrayList(anotherListOrCollection);   // from collection
    List<String> l2 = Lists.newArrayList(aStringArray);              // from array
    List<String> l3 = Lists.newArrayList("or", "string", elements"); // from varargs
    

    还请注意其他类中其他数据结构的类似方法,例如在Sets

    为什么番石榴?

    主要的吸引力可能是减少由于类型安全的泛型导致的混乱,因为使用Guava工厂方法可以在大多数情况下推断类型。 然而,自从Java 7与新的钻石运营商一起抵达后,这个论点的用水量就减少了。

    但它不是唯一的原因(Java 7并不是每个地方都有):简写语法也非常方便,如上所述,方法初始化器允许编写更多富有表现力的代码。 你可以在一个Guava中调用当前Java Collections的2。


    如果你不能...

    对于不可变列表

    使用JDK的Arrays.asList()Collections.unmodifiableList()工厂方法:

    List<String> l1 = Arrays.asList(anArrayOfElements);
    List<String> l2 = Arrays.asList("element1", "element2");
    

    注意:

  • asList()的返回类型表示ArrayList ,但它不是java.util.ArrayList 。 它是一个内部类型,它模仿ArrayList但实际上直接引用了过去的数组并禁止一些修改。
  • unmodifiableList()进一步锁定对原始列表的返回视图的更改。
  • 如果您需要可变列表,请参阅下一步。

    对于可变列表

    与上面相同,但用实际的java.util.ArrayList包装:

    List<String> l1  = new ArrayList<String>(Arrays.asList(array));    // Java 1.5 to 1.6
    List<String> l1b = new ArrayList<>(Arrays.asList(array));          // Java 1.7+
    List<String> l2  = new ArrayList<String>(Arrays.asList("a", "b")); // Java 1.5 to 1.6
    List<String> l2b = new ArrayList<>(Arrays.asList("a", "b"));       // Java 1.7+
    

    为教育目的:好手册的方式

    // for Java 1.5+
    static <T> List<T> arrayToList(final T[] array) {
      final List<T> l = new ArrayList<T>(array.length);
    
      for (final T s : array) {
        l.add(s);
      }
      return (l);
    }
    
    // for Java < 1.5 (no generics, no compile-time type-safety, boo!)
    static List arrayToList(final Object[] array) {
      final List l = new ArrayList(array.length);
    
      for (int i = 0; i < array.length; i++) {
        l.add(array[i]);
      }
      return (l);
    }
    
    链接地址: http://www.djcxy.com/p/17627.html

    上一篇: Convert an array into an ArrayList

    下一篇: ArrayList initialization equivalent to array initialization