小编Mus*_*ala的帖子

ArrayList是如何在Java Collection Framework内部表示的.

我正在通过Robert Sedgewick参加Coursera的算法讲座.当罗伯特先生指出一个人不能使用Generics with Arrays时,我有点困惑,因为它是不允许的.但Collection Framework中的ArrayList在内部使用Arrays,允许使用Generic数据类型.我的意思是说我们可以执行以下操作:

ArrayList<Integer> list = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

他指出的一个黑客是这样的:

public class FixedCapacityStack<Item>{
    private Item[] s;
    private int N = 0;

public FixedCapacityStack(int capacity)
{  s = (Item[]) new Object[capacity];} //this hack
Run Code Online (Sandbox Code Playgroud)

他还提到这是一个丑陋的黑客,必须避免,它也会在编译过程中产生警告.

我的问题是:

1.)ArrayList如何在内部表示各种泛型类型?

2.)如果(假设)他们使用上面提到的hack,为什么在用ArrayList编译程序时它不会产生警告?

3.)除了上面的演员之外还有更好的方法吗?

java generics collections casting arraylist

8
推荐指数
1
解决办法
786
查看次数

标签 统计

arraylist ×1

casting ×1

collections ×1

generics ×1

java ×1