【发布时间】:2015-11-12 14:13:42
【问题描述】:
我对我的 Java 编程非常陌生,并且正在学习 Google 的 Udacity 课程作为进修。我正在学习 Sunshine 应用程序的第 1 课,讲师选择通过声明字符串数组然后将其转换为 ArrayList 来创建假数据。
代码如下:
String[] data = {
"Mon 6/23 - Sunny - 31/17",
"Tue 6/24 - Foggy - 21/8",
"Wed 6/25 - Cloudy - 22/17",
"Thurs 6/26 - Rainy - 18/11",
"Fri 6/27 - Foggy - 21/10",
"Sat 6/28 - TRAPPED IN WEATHERSTATION - 23/18",
"Sun 6/29 - Sunny - 20/7"
};
List<String> weatherForecast = new ArrayList<>(Arrays.asList(data));
我想知道使用这种转换方法有什么好处吗?为什么不立即将数据声明为 ArrayList:
ArrayList weatherForecast = new ArrayList();
weatherForecast.add("Today - Sunny - 88/63");
weatherForecast.add("Tomorrow - Foggy = 70/46");
weatherForecast.add("Weds - Cloudy - 72/63");
weatherForecast.add("Thurs 6/26 - Rainy - 18/11");
weatherForecast.add("Sat 6/28 - TRAPPED IN WEATHERSTATION - 23/18");
weatherForecast.add("Sun 6/29 - Sunny - 20/7");
谢谢!
【问题讨论】:
-
也许讲师只是想证明您可以使用 Collections API 在数组和列表之间轻松转换。 ArrayList 在幕后使用了一个数组。在某些情况下(但不是这种情况),您可能会从使用数组中挤出一点性能优势,但列表将提供更多的功能。所以没有太大的区别,取决于你打算用它做什么。您可能更喜欢使用数组而不是 List - 直到您需要 List 提供的一些功能,而不是 List。
-
这样的聚合数组声明是为了实例化静态数据数组而完成的,而列表意味着动态形式,并且比数组更可能是方法调用的参数。从一个转换到另一个就像在说“现在它是不变的,但我们希望在未来的发展中得到一个列表”。至少我是这么读的。将数据直接添加到 ArrayList 相当于将
! important tags放在 css 文件中的规则旁边。换句话说,有点粗糙,即使它有效。 ;)