`
bugyun
  • 浏览: 555866 次
社区版块
存档分类
最新评论

Java 1.8 list 排序

    博客分类:
  • Java
 
阅读更多
package com.bugyun.po;


public class Student {

    private String name;
    private Integer age;
    private Float score ;
    
    
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Float getScore() {
		return score;
	}
	public void setScore(Float score) {
		this.score = score;
	}
	
	
	public Student(String name, Integer age, Float score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}
	
	
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
	}
      
}

 

 

ListSort.java

package com.bugyun.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import com.bugyun.po.Student;
import com.google.common.collect.Lists;

/**
 * 
 * list 排序
 * 1. 通过 Lambda 排序
 * 2. 通过 初始化 方法
 * 
 * @author Administrator
 */
public class ListSort {

	public static void main(String[] args) throws Exception {
		ListSort listSort = new ListSort();
		
		Student one = new Student("liKui", 22, 65.0f);
		Student two = new Student("songJiang", 55, 71.0f);
		Student three = new Student("wuSong", 45, 80.0f);
		Student four = new Student("sunErNiang", 80, 98f);
		Student five = new Student("liGui", 22, 19.0f);

		List<Student> humanList = new ArrayList<>();
		humanList.add(one);
		humanList.add(two);
		humanList.add(three);
		humanList.add(four);
		humanList.add(five);
		
		
		ArrayList<Student> humanListTwo = Lists.newArrayList(one, two, three, four, five);
		
		listSort.sortByAgeWithLambda(humanList);
		listSort.sortByAgeWithInstanceMethod(humanList);
		listSort.sortByAgeScoreWithComparator(humanList);
		
//		listSort.sortByAgeWithLambda(humanListTwo);
//		listSort.sortByAgeWithInstanceMethod(humanListTwo);
//		listSort.sortByAgeScoreWithComparator(humanListTwo);
	}
	
	
	/**
	 * 通过 Lambda 对学生年龄进行排序
	 * @param humanList
	 * @throws Exception
	 */
	public void sortByAgeWithLambda(List<Student> humanList) throws Exception {

		System.out.println("\n----------美丽的分割线----------");
		
		humanList.sort((Student h1, Student h2) -> h1.getAge().compareTo(h2.getAge()));
		
		printList(humanList);

	}

	/**
	 * 通过 默认方法  对学生年龄进行排序
	 * @param humanList
	 * @throws Exception
	 */
	public void sortByAgeWithInstanceMethod(List<Student> humanList) throws Exception {

		System.out.println("\n----------美丽的分割线----------");
		
		Collections.sort(humanList, Comparator.comparing(Student::getAge));
		printList(humanList);
	}
	

	public void sortByAgeScoreWithComparator(List<Student> humanList) throws Exception {
		System.out.println("\n----------美丽的分割线----------");
		
		Comparator<Student> comparator = (h1, h2) -> {
			if (h1.getAge().equals(h2.getAge())) {
				return Float.compare(h1.getScore(), h2.getScore());
			}
			return h1.getAge().compareTo(h2.getAge());
		};
		
		humanList.sort(comparator);
		printList(humanList);
	}

	
	private void printList(List<Student> humanList) {
		for (Student human : humanList) {
			System.out.println(human);
		}
		/**
		 *  对集合洗牌,打乱顺序
		 */
		Collections.shuffle(humanList);
	}
	
	
}

 

分享到:
评论

相关推荐

    JAVA 1.8 API官方文档中文版

    **JAVA 1.8 API官方文档中文版** Java 1.8 API官方文档是Java开发者不可或缺的参考资料,它详尽地介绍了Java开发平台的核心类库,涵盖了从基本数据类型、对象创建到高级特性如多线程、网络编程、I/O流、反射、泛型...

    java1.8新特性stream.rar

    Java 1.8是Java语言发展的一个重要里程碑,引入了许多创新特性和改进,极大地提升了开发效率和代码可读性。其中,Stream API是Java 8中最显著的新特性之一,它为处理集合数据提供了全新的方式。Stream API使得我们...

    Java1.8中文API

    通过查阅提供的Java1.8-中文API.chm文件,开发者可以深入了解每个类、接口、方法的详细信息,学习如何有效利用这些特性来提升开发效率和代码质量。这份中文文档是Java 1.8学习者和开发者不可或缺的工具。

    学习java源码,java1.8

    Java 1.8,也被称为Java 8,是Java发展历程中的一个里程碑版本,引入了许多创新特性,这些特性极大地提升了开发效率和代码质量。在这个压缩包文件"JAVA YUANMA"中,很可能包含了Java 1.8的关键源代码,让我们一起...

    java1.8 中 stream 的 groupingBy 最大值、最小值分组

    主要是介绍在 JDK8中使用 stream 流的 groupingBy 方法源进行最大值分组、最小值分组、平均值分组、统计分组

    java使用stream对日期排序

    通过以上介绍,我们可以看出Java Stream API提供了灵活且高效的方式来处理日期排序。无论是在简单的日期列表还是复杂的数据结构中,都可以轻松地实现排序功能。实践过程中,可以根据实际需求选择合适的日期类型和...

    Java_1.8_API文档,中文版本

    Java 1.8 API文档是Java开发者不可或缺的参考资料,它详尽地列出了Java 8平台的核心类库,包括各种类、接口、枚举和注解。这份中文版的文档对于国内开发者来说尤为方便,避免了语言障碍,使得学习和查询Java 8的功能...

    Java 1.8 API 帮助文档-中文版

    Java 1.8 API 帮助文档是Java开发者的重要参考资料,它包含了Java Development Kit (JDK) 1.8版本中的所有公共类、接口、枚举和注解的详细说明。这个中文版文档使得中国开发者能更方便地理解和使用Java 1.8的特性,...

    Java1.8中文APICHM文档.zip

    这个压缩包包含了一个名为"Java1.8中文APICHM文档.CHM"的文件,这通常是一个Windows帮助文件格式,用于组织和查看离线文档。下面我们将深入探讨Java 1.8 API中的核心知识点。 1. **基础类库** - **Object类**: ...

    java jdk 1.8 api 中文英文版

    Java JDK 1.8 API是Java开发者不可或缺的重要参考资料,它包含了Java开发工具包中的所有类、接口、枚举和注解的详细文档。这个API文档提供了全面的接口描述,帮助开发者理解和使用Java语言的各种功能。这里我们将...

    Java 1.8 lambda表达式示例源码

    Java 1.8引入了lambda表达式,这是Java语言的一项重大改进,显著提升了代码的简洁性和可读性,尤其在处理函数式编程场景时。Lambda表达式是Java 8对函数式接口支持的核心组成部分,它允许我们将代码块视为一种值,...

    Java 1.8源码 jdk8u144源码

    Java 1.8源码,特别是jdk8u144版本的源码,是Java开发者深入理解这个平台核心实现的关键。这些源代码包含了Java开发工具包(JDK)中的所有核心类库,如集合框架、I/O流、多线程、网络编程、反射机制以及新的特性,...

    java1.8api开发文档

    7. **集合工厂方法**:Java 8在集合接口中添加了工厂方法,如List.of(), Set.of(), Map.of()等,简化了创建不可变集合的操作。 8. **并发改进**:Java 8对Fork/Join框架进行了优化,同时引入了并行流,使得开发者能...

    Java8 用Lambda表达式给List集合排序的实现

    Java8 用Lambda表达式给List集合排序的实现 Java8 中引入了Lambda表达式和函数式编程,极大地简化了编程的难度和复杂度。本文主要介绍了Java8 中使用Lambda表达式给List集合排序的实现,通过示例代码详细地介绍了...

    java的list取之方法

    根据提供的文件信息,标题与描述均指向了Java中List的操作方法。然而,给出的部分内容却是一段关于导入Excel文件到Web应用中的代码片段,并没有直接涉及List的具体操作方法。因此,我们将结合标题与描述,围绕Java中...

    java 1.8新特性 lambda表达式.docx

    ### Java 1.8 新特性:Lambda 表达式与 Stream 流操作 #### Lambda 表达式介绍 Lambda 表达式是 Java 1.8 中引入的一个重要特性,它使得 Java 开发者能够在代码中更加简洁地表示匿名方法。这种表达式尤其适用于...

    Java8+jdk1.8中文文档.zip

    JDK(Java Development Kit)1.8是这个版本的官方开发工具包,包含Java运行环境、编译器和各种工具,对于学习和开发Java应用至关重要。中文文档的提供使得非英语背景的开发者能够更加方便地理解和掌握Java 8的相关...

    java jdk 1.8API文档谷歌翻译版本

    Java JDK 1.8 API文档是Java开发人员的重要参考资料,它包含了Java标准版(SE)1.8版本的所有核心类库、接口和方法的详细说明。这个谷歌翻译版本为中文用户提供了极大的便利,使得理解英文原版文档变得更加轻松。...

    java api 1.8 最新,超全面,中文版

    7. **新的集合工厂方法**:Java 8对集合框架进行了增强,如List、Set、Map等都添加了新的工厂方法,可以直接创建带有初始元素的集合,简化了代码。 8. **并行数组操作**:Arrays类提供了并行的排序和搜索方法,利用...

    java JDK1.8

    9. **类型推断增强**:编译器的类型推断能力在JDK 1.8中得到提升,允许在泛型实例化时省略类型参数,如`List&lt;String&gt; list = new ArrayList();` 10. **双括号初始化**:这是一种快速创建匿名内部类实例的语法糖,如...

Global site tag (gtag.js) - Google Analytics