将数组转换为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