Eli*_*lik 14 java string arraylist
我与Java编程完全脱节,并且正在谷歌的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));
Run Code Online (Sandbox Code Playgroud)
我想知道使用这种转换方法有什么好处吗?为什么不立即将数据声明为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");
Run Code Online (Sandbox Code Playgroud)
谢谢!
Joo*_*gen 12
"正常"的方式是使用第三种形式:
List<String> weatherForecast = new ArrayList<>();
Collections.addAll(weatherForecast,
"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");
Run Code Online (Sandbox Code Playgroud)
List是一个接口,使用它可以使用另一个类似LinkedList的实现类(仅用于几个元素).也可用作参数类型.
这使用Collections实用程序类添加varargs ...
字符串.并且在引擎盖下String[]
用于那些args.
第.asList
一个选项足以让List<String>
不加入.
两者都做同样的事情.
但不同的是,第一个使它更具可读性.您完全知道要将天气预报信息添加到列表中.
在第二种情况下,你只是继续添加信息,使用add()
,这实际上看起来比另一个有点笨拙.
考虑您要将素数添加到列表中
First Approach:
int [] primeNums = {2, 3, 5, 7, 11, 13, 17, 19};
List<Integer> primes = new ArrayList<>(Arrays.asList(primeNums));
Second Approach:
List<Integer> primes = new ArrayList<>();
primes.add(2);
primes.add(3);
primes.add(5);
primes.add(7);
primes.add(11);
primes.add(13);
primes.add(17);
primes.add(19);
Run Code Online (Sandbox Code Playgroud)
您也可以遍历数组并添加它.
for(int i = 0; i < primeNums.length; ++i)
primes.add(primeNums[i]);
Run Code Online (Sandbox Code Playgroud)
第一种方法:
Arrays.asList
使用内部类为给定的特定数组创建固定大小的列表,内部ArrayList
类只是数组本身的包装,使其更有效,然后创建数组的完整副本.List
变量而不是ArrayList
变量中,这样可以提供更大的灵活性.第二种方法:
如果您使用该方法,请至少List
以通用方式声明:
ArrayList<String> weatherForecast = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
替代方案
请注意,您可以直接执行:
List<String> weatherForecast = Arrays.asList(
"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"
);
Run Code Online (Sandbox Code Playgroud)