Java8 使用 stream().sorted()对List集合进行排序的操作

作者:Romantic_321 时间:2022-11-23 20:57:11 

1、声明一个测试对象


import java.time.LocalDate;
import java.util.List;
import lombok.Data;

@Data
public class StudentInfo{

//名称
 private String name;

//性别 true男 false女
 private Boolean gender;

//年龄
 private Integer age;

//身高
 private Double height;

//出生日期
 private LocalDate birthday;
}

2、添加一些测试数据


//测试数据,请不要纠结数据的严谨性
List<StudentInfo> studentList = new ArrayList<>();
studentList.add(new StudentInfo("李小明",true,18,1.76,LocalDate.of(2001,3,23)));
studentList.add(new StudentInfo("张小丽",false,18,1.61,LocalDate.of(2001,6,3)));
studentList.add(new StudentInfo("王大朋",true,19,1.82,LocalDate.of(2000,3,11)));
studentList.add(new StudentInfo("陈小跑",false,17,1.67,LocalDate.of(2002,10,18)));
使用年龄进行升序排序
//排序前输出
StudentInfo.printStudents(studentList);
//按年龄排序(Integer类型)
List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparator.comparing(StudentInfo::getAge)).collect(Collectors.toList());
//排序后输出
StudentInfo.printStudents(studentsSortName);

排序后结果

Java8 使用 stream().sorted()对List集合进行排序的操作

使用年龄进行降序排序(使用reversed()方法)


//排序前输出
StudentInfo.printStudents(studentList);
//按年龄排序(Integer类型)
List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparator.comparing(StudentInfo::getAge).reversed()).collect(Collectors.toList());
//排序后输出
StudentInfo.printStudents(studentsSortName);

排序后结果

Java8 使用 stream().sorted()对List集合进行排序的操作

使用年龄进行降序排序,年龄相同再使用身高升序排序


//排序前输出
   StudentInfo.printStudents(studentList);
   //按年龄排序(Integer类型)
   List<StudentInfo> studentsSortName = studentList.stream()
       .sorted(Comparator.comparing(StudentInfo::getAge).reversed().thenComparing(StudentInfo::getHeight))
       .collect(Collectors.toList());
   //排序后输出
   StudentInfo.printStudents(studentsSortName);

排序后结果

Java8 使用 stream().sorted()对List集合进行排序的操作

补充知识:JAVA实现将文字合成到指定图片的指定位置(JAVA合成文本文字到图片文件:附font字体不生效解决办法)

实现效果如图:

Java8 使用 stream().sorted()对List集合进行排序的操作

代码如下:

参数s1,s2分别代表你想要合成到图片中的文字信息,如需多个可自行进行修改


import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;

/**
* create By Jlm
*/

public class ImgBean{

public static void ImgYin(String s1, String s2, String ImgName){
   try{
     File file = new File(ImgName);
     Image src = ImageIO.read(file);
     int wideth=src.getWidth(null);
     int height=src.getHeight(null);
     BufferedImage image=new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
     Graphics g=image.createGraphics();
     g.drawImage(src,0,0,wideth,height,null);
     //设置字体颜色
     g.setColor(Color.RED);
     //size字体大小
     g.setFont(new Font("STKaiti",Font.PLAIN,50));
     //wideth控制字体距离右侧边缘距离 height控制字体距离底部距离
     g.drawString(s1,wideth-600,height-400);
     g.drawString(s2,wideth-600,height-500);
     g.dispose();
     FileOutputStream out=new FileOutputStream(ImgName);
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
     encoder.encode(image);
     out.close();
   }
   catch(Exception e){
     System.out.println(e);
   }
 }

public static void main(String[] args) {
   ImgYin("1111111","2222222","/Users/jianglinmao/Downloads/11.png");
 }
}

有的同学可能发现设置字体的时候可能不生效,目前博主已发现的原因为字体名称对应不上导致

首先在你要进行合成操作的环境下执行如下代码,看看目前该环境已存在的字体有哪些,找到自己想要的字体对应的名称即可


import java.awt.*;

/**
* Created by jlm on 2019/10/22.
*/
public class FontTest {
 public static void main(String[] args) {
   Font[] fonts = GraphicsEnvironment
       .getLocalGraphicsEnvironment().getAllFonts();
   for (Font f : fonts) {
     System.out.println("Name:" + f.getFontName());
   }
 }
}

在控制台寻找自己想要的字体的英文名称,再替换到new Font()的指定位置就可以了

Java8 使用 stream().sorted()对List集合进行排序的操作

比如红色圈出来的就是字体仿宋和黑体对应的名称,博主试过输入中文是不生效的。

如果不想在原图片文件上直接修改,而是想根据原文件图片,修改后生成新的文件图片,修改代码如下位置即可

Java8 使用 stream().sorted()对List集合进行排序的操作

来源:https://blog.csdn.net/Romantic_321/article/details/107252796

标签:Java8,stream,sorted,List,排序
0
投稿

猜你喜欢

  • Android模拟器"Failed To Allocate memory 8"错误如何解决

    2021-12-09 05:04:48
  • LINQ操作符SelectMany的用法

    2021-08-22 18:20:37
  • C++找出字符串中出现最多的字符和次数,时间复杂度小于O(n^2)

    2023-06-22 07:32:31
  • C#实现为一张大尺寸图片创建缩略图的方法

    2021-08-03 21:07:15
  • Android RecyclerView使用ListAdapter高效刷新数据的操作方法

    2023-06-24 22:22:09
  • Java程序中使用JavaMail发送带图片和附件的邮件

    2022-07-02 17:00:33
  • c# 遍历 Dictionary的四种方式

    2023-04-17 13:11:10
  • MyBatis中${} 和 #{} 有什么区别小结

    2021-09-21 14:42:35
  • java中获取json的所有key方法

    2023-10-15 06:15:26
  • Java自定义实现equals()方法过程解析

    2021-10-12 11:21:48
  • Spring 报错:元素 "context:component-scan" 的前缀 "context" 未绑定的问题解决

    2023-09-10 07:45:34
  • Java基础知识之ByteArrayInputStream流的使用

    2023-10-27 14:37:53
  • Java中的StringUtils引入及使用示例教程

    2023-01-10 20:01:04
  • SpringBoot注册FilterRegistrationBean相关情况讲解

    2022-04-24 01:22:59
  • Springboot轻量级的监控组件SpringbootAdmin

    2023-08-25 10:08:31
  • Spring MVC过滤器-登录过滤的代码实现

    2021-06-05 15:01:43
  • java基本教程之synchronized关键字 java多线程教程

    2023-02-20 04:11:17
  • Struts2+Hibernate实现数据分页的方法

    2022-10-28 05:31:13
  • Flutter的键值存储数据库使用示例详解

    2023-10-15 02:13:15
  • Android中Activity启动默认不显示输入法解决方法

    2022-12-27 20:49:30
  • asp之家 软件编程 m.aspxhome.com