2016-11-12 62 views
0

我只是想澄清这个问题我有一会更有效和更“正确”的代码。ArrayList使用什么类?

我给使用对象的一类“学生”在对象的数组列表。我有一个名为类另一类必须在学生类的非常相同的对象引用数组列表。

我应该声明为

ArrayList<Student> myStudents = new ArrayList<Student>(); 

ArrayList<Class> myStudents = new ArrayList<Class>(); 

同样问题的另一部分是我所见过的人申报的ArrayList为ArrayList<Student> myStudents = new ArrayList<>(); 的“类”级,其中的下半年胡萝卜留空。差异意味着什么?这是否意味着数组列表不是任何类的对象?

谢谢你这么多的时间和帮助 干杯

+0

胡萝卜? xaxaxa史诗。你的意思是钻石运营商。看一看:http://stackoverflow.com/questions/4166966/what-is-the-point-of-the-diamond-operator-in-java-7#4167148 – GOXR3PLUS

+0

记得看视频很久以前有人将其称为胡萝卜和补充说,它是有争议的或东西。我也没在意,现在查找正确的说法,因为我是这个占用。无论如何,我明白这个傻瓜,这让我看起来:} – eArshdeep

+0

我不是这个意思。它只是很有趣:) – GOXR3PLUS

回答

0

这取决于你想在清单上存储,而不是你在哪里使用它是什么。如果你存储Student对象,那么你会使用ArrayList<Student>()

在右侧省略的类型称为类型推断(在java 7中添加),这意味着右侧的类型参数将根据左侧的赋值变量的类型推断出来。它有助于以更清晰的方式编写代码。对于例如

以下文字更容易:

List<Some<Type<Another>>> var = new ArrayList<>(); 

比:

List<Some<Type<Another>>> var = new ArrayList<Some<Type<Another>>>(); 
0

技术上,既不。如果你想,如果你想创建一个ArrayListClass对象来创建一个ArrayListStudent对象和

List<Class> myClasses = new ArrayList<>(); 

List<Student> myStudents = new ArrayList<>(); 

你愿意这样做。

1)注意变量名。 2)请注意,你应该总是尝试编码到一个接口(左侧是List,而不是ArrayList)。这允许更大的灵活性,因为您不依赖于稍后的具体实现ArrayList。这一点非常强大!您可以编写方法签名来接受List类型的对象,然后使用ArrayList,LinkedListStack或实现List的任何类。取决于你以后如何使用你的ArrayList,接口可能就足够了。

菱形运算符允许编译器推断类型参数的值,而无需全部输入。对于较旧的Java版本,需要向后兼容。

至于性能优化一般的做法,你也会想,如果有可能提供一个ArrayList的初始容量。所以如果你知道只有5类,那么你会这样做:

List<Class> myClasses = new ArrayList<>(5); 
相关问题