在千锋逆战学习第36天
每日一句:调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。
今天继续学习了JDK的内容。做了一个学生管理系统,做完了基本搭建和增加元素部分。
明天继续努力。
课堂案例
stream包
public class Emp {
private String name;
private int age;
private double score;
@Override
public String toString() {
return "Emp [name=" + name + ", age=" + age + ", score=" + score + "]";
}
public Emp() {
super();
}
public Emp(String name, int age, double score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public boolean equals(Object obj) {
// 1.比较两个引用是否指向同一个对象
if (this == obj) {
return true;
}
// 2.obj是否为空
if (obj == null) {
return false;
}
// 3.判断两个引用的实际类型
if (this.getClass() != obj.getClass()) {
return false;
}
// 4.墙砖
Emp emp = (Emp) obj;
// 5.比较
if (this.name.equals(emp.getName()) && this.age == emp.getAge() && this.score == emp.getScore()) {
return true;
}
return false;
}
}
public class TestCreateStream {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add("zhaoliu");
// //1.创建Stream
// Stream<String> stream = list.stream();
// //2.中间操作
// Stream<String> center = stream.filter((s)->s.length()>=5);
// //3.最终操作
// System.out.println("名字长度大于等于5的有:");
// center.forEach(System.out::println);
//简化
list.stream().filter((s)->s.length()>=5).forEach(System.out::println);
int[] a = new int[5];
// List<String> list = new ArrayList<String>();
// list.add("zhangsan");
// list.add("lisi");
// list.add("wangwu");
// list.add("zhaoliu");
//
// List<String> newlist = new ArrayList<String>();
// for (String s : list) {
// if (s.length() > 6) {
// newlist.add(s);
// }
// }
// System.out.println("名字长度大于等于7的是:");
// for (String s : newlist) {
// System.out.println(s);
// }
}
}
public class TestStreamMethod {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add("zhaoliu");
System.out.println("-----fiter-----");
//filter过滤,制定规则
list.stream().filter((s)->s.startsWith("z")).filter((s)->s.contains("s")).forEach(System.out::println);
System.out.println("-----limit-----");
//返回不超过指定数量
list.stream().limit(3).forEach(System.out::println);
System.out.println("-----distinct-----");
List<Emp> elist = new ArrayList<Emp>();
elist.add(new Emp("tom", 20, 2200));
elist.add(new Emp("mike", 22, 2300));
elist.add(new Emp("alex", 23, 2600));
elist.stream().distinct().forEach(System.out::println);;
elist.forEach(System.out::println);
System.out.println("-----map-----");
elist.stream().map((emp)->emp.getName()).forEach(System.out::println);
elist.stream().map((emp)->emp.getScore()).forEach(System.out::println);
List<String> strList = Arrays.asList("aaa","bbb","ccc","ddd","eee");
// strList.stream().map((s)->s.toUpperCase()).forEach(System.out::println);
strList.stream().map((String::toUpperCase)).forEach(System.out::println);
System.out.println("-----sorted-----");
//sorted排序,流中的元素必须实现Comparable接口
// list.stream().sorted().forEach(System.out::println);
// elist.stream().sorted().forEach(System.out::println);
System.out.println("--------sorted(Comparator)--------");
elist.stream().sorted((x,y)-> Double.compare(x.getScore(),y.getScore())).forEach(System.out::println);
}
}
--------------------------------------------------------------------------
end包
public class TestEndMethod {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("Alist");
list.add("BSet");
list.add("C罗");
list.add("D第");
list.add("Element");
System.out.println("-----count-----");
long count = list.stream().filter((s) -> s.length() >= 3).count();
System.out.println("流中有" + count);
System.out.println("-----anymatch-----");
boolean b1 = list.stream().filter((s) -> s.length() >= 3).anyMatch((s) -> s.startsWith("A"));
System.out.println("有没有A开头的" + b1);
System.out.println("-----allmatch-----");
boolean b2 = list.stream().filter((s) -> s.length() >= 3).allMatch((s) -> s.startsWith("A"));
System.out.println(b2);
System.out.println("-----nonematch-----");
boolean b3 = list.stream().filter((s) -> s.length() >= 3).noneMatch((s) -> s.contains("A"));
System.out.println(b3);
System.out.println("-----findfirst-----");
String s1 = list.stream().filter((s)->s.length()>=3).findFirst().get();
System.out.println(s1);
System.out.println("-----findany-----");
String s2 = list.stream().findAny().get();
System.out.println(s2);
System.out.println("--------max--------------");
List<Emp> elist = new ArrayList<Emp>();
elist.add(new Emp("高强",18,100));
elist.add(new Emp("高蓝轩",28,10));
elist.add(new Emp("张阔",38,30));
elist.add(new Emp("张欢腾",16,100));
elist.add(new Emp("张阔",39,30));
Optional<Emp> max = elist.stream().max((e1,e2)->e1.getAge()-e2.getAge());
System.out.println(max.get());
System.out.println("--------max--------------");
Optional<Emp> min = elist.stream().min((e1,e2)->e1.getAge()-e2.getAge());
System.out.println(min.get());
}
}
--------------------------------------------------------------------------
thread包
public class TestStream {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for(int i=0;i<10000;i++) {
UUID u = UUID.randomUUID();
list.add(u.toString());
}
System.out.println("串行...");
//串行->单线程
long start = System.currentTimeMillis();
long count = list.stream().sorted().count();
System.out.println("排序了"+count);
long end = System.currentTimeMillis();
System.out.println("用时:"+(end-start));
//并行->多线程
System.out.println("并行...");
long start1 = System.currentTimeMillis();
long count1 = list.parallelStream().sorted().count();
System.out.println("排序了"+count1);
long end1 = System.currentTimeMillis();
System.out.println("用时:"+(end1-start1));
}
}