将一个数组转换成ArrayList

103

我在Java中将一个数组转换为ArrayList遇到了很多问题。这是我现在的数组:

Card[] hand = new Card[2];

"hand"持有一个"Cards"数组。将其转化为ArrayList后会是什么样子?


1
你有阅读过任何参考资料吗,例如http://docs.oracle.com/javase/tutorial/collections/? - Oliver Charlesworth
4个回答

89
这将给你一个列表。
List<Card> cardsList = Arrays.asList(hand);

如果你想要一个ArrayList,可以这样做:

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

10
不行!这会产生一个对象,作为对底层对象的“List”包装器。与真正的“ArrayList”不同,结果的“List”大小不可调整,并且尝试向其末尾添加元素将导致“UnsupportedOperationException”。 - Adam Norberg

39

作为一个 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


谢谢!最后一个问题,我该如何将ArrayList传递给方法?目前我的代码是这样的:public void getHandValue(ArrayList< Card > hand) {...}ArrayList在我的主要参数中。只有“ArrayList”一词出现错误。 - Saatana
你应该可以有一个方法签名 void getHandValue(ArrayList<Card> hand),问题很可能是在调用该方法时出现的。 - twain249

15
List<Card> list = new ArrayList<Card>(Arrays.asList(hand));

1

声明列表(并用空的ArrayList进行初始化)

List<Card> cardList = new ArrayList<Card>();

添加一个元素:

Card card;
cardList.add(card);

迭代元素:

for(Card card : cardList){
    System.out.println(card);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接