Example:
有一个集合里面存放的字符串,样子如:“赵丽颖,91”、“鹿晗,98”、“王宝强,87”…
要求打印输出所有成绩当中大于90分的数字。
1.首先定义一个集合ArrayList,存入指定格式的若干字符串。
2.我们想要逗号后面的,就要分割字符串:split,然后取用结果数组当中的1号元素。
3.根据字符串切割出来的“98”仍是一个String,需要转换成int才能比较大小:Integer.parseInt静态方法
4.要判断一下转换之后的int是不是大于90,进行筛选。
5.对筛选之后的最终结果进行打印输出。
冗余的for循环:
public class ArrayList {
public static void main(String[] args) {
// 首先创建一个集合,然后放入指定字符串
ArrayList<String> ar1 = new ArrayList<>();
ar1.add("赵丽颖,91");
ar1.add("鹿晗,98");
ar1.add("王宝强,87");
System.out.println(ar1);
// 分割每个字符串,只要逗号后面的
ArrayList<String> scoreList = new ArrayList<>(); // 保存分数字符串
for (int i = 0; i < ar1.size(); i++) {
String str = ar1.get(i);// 当前字符串,"赵丽颖,91"
String[] array = str.split(",");
String score = array[1]; // "98"
scoreList.add(score);
}
// 将字符串“98”等等转换成int数字98
ArrayList<Integer> numList = new ArrayList<>();//保存的数字是:91,98,97
for (int i = 0; i < scoreList.size(); i++) {
int score = Integer.parseInt(scoreList.get(i));
numList.add(score);
}
//过滤,只要大于90的,不要低于90的
ArrayList<Integer> ResultList = new ArrayList<>();
for(int i = 0;i<numList.size();i++) {
int num = numList.get(i);
if(num>=90) {
ResultList.add(num);
}
}
//打印输出
System.out.println(ResultList); //[91, 98]
}
}
使用Stream流:
public class ArrayListStream {
public static void main(String[] args) {
// 首先创建一个集合,然后放入指定字符串
ArrayList<String> ar1 = new ArrayList<>();
ar1.add("赵丽颖,91");
ar1.add("鹿晗,98");
ar1.add("王宝强,87");
// Stream API更优写法
ar1.stream().map(s -> s.split(",")[1]).map(Integer::parseInt)
.filter(n -> n > 90).forEach(System.out::println);
}
}
这里的Stream流:
ar1.stream().map(s -> s.split(",")[1]).map(Integer::parseInt)
.filter(n -> n > 90).forEach(System.out::println);
ar1.stream() //集合拿到一个流stream
.map(s -> s.split(",")[1])
//map映射,把"赵丽颖,91" 变成 "91"
// [1] 代表取数组下标位置1
等价于:
.map((String str) ->{
String[] array = str.split(",");
String result = array[1];
return result;
});
.map(Integer::parseInt)
//map映射,把"91",String变成int
方法引用,等价于
.map((String str) -> {
int num = Integer.parseInt(str);
return num;
});
filter(n -> n > 90)
//filter过滤大于90
forEach(System.out::println);
//forEach每一个字符打印