查找最小或者最大日期

要从日期流中获取最大或者最小日期,我们可以使用“Comparator.comparing(LocalDate::toEpochDay)”比较器。
toEpochDay()函数简单地增加日期的天数,其中第 0 天是 1970-01-01

LocalDate start = LocalDate.now();
LocalDate end = LocalDate.now().plusMonths(1).with(TemporalAdjusters.lastDayOfMonth());
// 创建日期流
List<LocalDate> dates = Stream.iterate(start, date -> date.plusDays(1))
					    	.limit(ChronoUnit.DAYS.between(start, end))
					    	.collect(Collectors.toList());
// 获取最小或者最大日期
LocalDate maxDate = dates.stream()
							.max( Comparator.comparing( LocalDate::toEpochDay ) )
							.get();
LocalDate minDate = dates.stream()
							.min( Comparator.comparing( LocalDate::toEpochDay ) )
							.get();
System.out.println("maxDate = " + maxDate);
System.out.println("minDate = " + minDate);

根据对象属性找出最大或者最小的对象

对象比较首先涉及创建我们自己的自定义比较器。

例如,如果我想从 Employee对象流中获取最年轻的员工,那么我的比较器将类似于 Comparator.comparing(Employee::getAge)
现在使用这个比较器来获取最大或者最小员工对象。

找出年龄最大或者最小的员工。

List<Employee> employees = new ArrayList<Employee>();
employees.add(new Employee(1, "JackLi", 36));
employees.add(new Employee(2, "JackLi", 46));
employees.add(new Employee(3, "BobRobert", 52));
Comparator<Employee> comparator = Comparator.comparing( Employee::getAge );
// Get Min or Max Object
Employee minObject = employees.stream().min(comparator).get();
Employee maxObject = employees.stream().max(comparator).get();
System.out.println("minObject = " + minObject);
System.out.println("maxObject = " + maxObject);

Employee对象是:

class Employee {
	private int id;
	private String name;
	private int age;
	public Employee(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	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;
	}
	@Override
	public String toString() {
		StringBuilder str = null;
		str = new StringBuilder();
		str.append("Id:- " + getId() + " Name:- " + getName() + " Age:- " + getAge());
		return str.toString();
	}
}

查找最小或者最大数

要从数字流中找到最小和最大数字,请像比较器一样使用“Comparator.comparing(Integer::valueOf)”。
下面的例子是整数流。

// 获取最大或者最小的数
Integer maxNumber = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9)
					.max(Comparator.comparing(Integer::valueOf))
					.get();
Integer minNumber = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9)
					.min(Comparator.comparing(Integer::valueOf))
					.get();
System.out.println("maxNumber = " + maxNumber);
System.out.println("minNumber = " + minNumber);
Java 在流中查找最小和最大日期、数字、字符串或者对象等
欢迎来到之路教程(on itroad-com)

查找最小或者最大字符或者字符串

要从字符流中查找最小和最大字符串或者字符,请使用类似比较器的 Comparator.comparing( String::valueOf )

// Get Min or Max String/Char
String maxChar = Stream.of("H", "T", "D", "I", "J")
						.max(Comparator.comparing(String::valueOf))
						.get();
String minChar = Stream.of("H", "T", "D", "I", "J")
						.min(Comparator.comparing(String::valueOf))
						.get();
System.out.println("maxChar = " + maxChar);
System.out.println("minChar = " + minChar);
日期:2020-09-17 00:10:06 来源:oir作者:oir