千锋20200323

在千锋逆战学习第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));
	}
}
发布了40 篇原创文章 · 获赞 0 · 访问量 1130

猜你喜欢

转载自blog.csdn.net/qq_41841482/article/details/105056537