网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Java中怎么利用lambda表达式排序

Java中怎么利用lambda表达式排序,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

创新互联建站服务项目包括河南网站建设、河南网站制作、河南网页制作以及河南网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,河南网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到河南省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

1.lambda表达式排序

我们首先看几个比较常见的排序例子,基本数据类型的排序

    List list = Arrays.asList(1,3,2,5,4);
    list.sort(Comparator.naturalOrder());
    System.out.println(list);
    list.sort(Comparator.reverseOrder());
    System.out.println(list);
  
   输出结果:

    [1, 2, 3, 4, 5]
    [5, 4, 3, 2, 1]

我们可以看到执行结果是符合预期的,但是多数场景我们可能需要针对对象的某个属性进行排序,那么应该怎样做呢?我们看下边的例子:

public class Student {
    private String name;
    private String sexual;
    private Integer age;

    public Student(String name, String sexual,Integer age) {
        this.name = name;
        this.sexual = sexual;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSexual() {
        return sexual;
    }

    public void setSexual(String sexual) {
        this.sexual = sexual;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sexual='" + sexual + '\'' +
                ", age=" + age +
                '}';
    }

public class Starter {
    public static void main(String[] args) {
        List list = Arrays.asList(
                new Student("jack", 12),
                new Student("john", 13),
                new Student("lily", 11),
                new Student("lucy", 10)
        );
        list.sort(Comparator.comparing(Student::getAge));
        System.out.println(list);
        list.sort(Comparator.comparing(Student::getAge).reversed());
        System.out.println(list);
    }
}

输出结果:

[Student{name='lucy', age=10}, Student{name='lily', age=11}, Student{name='jack', age=12}, Student{name='john', age=13}]
[Student{name='john', age=13}, Student{name='jack', age=12}, Student{name='lily', age=11}, Student{name='lucy', age=10}]

 如果我们需要按照性别分组再排序又该如何实现呢?我们接着看下边的例子

public class Starter {
    public static void main(String[] args) {
        List list = Arrays.asList(
                new Student("jack", "male", 12),
                new Student("john", "male", 13),
                new Student("lily", "female", 11),
                new Student("david", "male", 14),
                new Student("luck", "female", 13),
                new Student("jones", "female", 15),
                new Student("han", "male", 13),
                new Student("alice", "female", 11),
                new Student("li", "male", 12)
        );
 Map> groupMap = list.stream().sorted(Comparator.comparing(Student::getAge))
.collect(Collectors.groupingBy(Student::getSexual, Collectors.toList()));
        System.out.println(groupMap.toString());
    }
}

输出结果:

{
	female = [
      Student {
		name = 'lily', sexual = 'female', age = 11
	  }, 
      Student {
		name = 'alice', sexual = 'female', age = 11
	}, Student {
		name = 'luck', sexual = 'female', age = 13
	}, Student {
		name = 'jones', sexual = 'female', age = 15
	}],
   male = [
    Student {
		name = 'jack', sexual = 'male', age = 12
	}, Student {
		name = 'li', sexual = 'male', age = 12
	}, Student {
		name = 'john', sexual = 'male', age = 13
	}, Student {
		name = 'han', sexual = 'male', age = 13
	}, Student {
		name = 'david', sexual = 'male', age = 14
	}]
}

我们看到上边的输出结果存在一个问题,如果年龄相同则没有按照姓名排序,怎样实现这个功能呢?我们接着看下边的例子

Map> groupMap = list.stream().sorted(Comparator.comparing(Student::getAge)
.thenComparing(Student::getName)).collect(Collectors.groupingBy(Student::getSexual, Collectors.toList()));

输出结果:

{
	female = [
     Student {
		name = 'alice', sexual = 'female', age = 11
	}, Student {
		name = 'lily', sexual = 'female', age = 11
	}, Student {
		name = 'luck', sexual = 'female', age = 13
	}, Student {
		name = 'jones', sexual = 'female', age = 15
	}],
   male = [
     Student {
		name = 'jack', sexual = 'male', age = 12
	}, Student {
		name = 'li', sexual = 'male', age = 12
	}, Student {
		name = 'han', sexual = 'male', age = 13
	}, Student {
		name = 'john', sexual = 'male', age = 13
	}, Student {
		name = 'david', sexual = 'male', age = 14
	}]
}

关于Java中怎么利用lambda表达式排序问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享文章:Java中怎么利用lambda表达式排序
文章来源:http://bjjierui.cn/article/iesppo.html

其他资讯