Java8 使用 stream().sorted()對List集合進行排序的操作
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、添加一些測試數(shù)據(jù)
//測試數(shù)據(jù),請不要糾結(jié)數(shù)據(jù)的嚴謹性
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);
排序后結(jié)果

使用年齡進行降序排序(使用reversed()方法)
//排序前輸出 StudentInfo.printStudents(studentList); //按年齡排序(Integer類型) List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparator.comparing(StudentInfo::getAge).reversed()).collect(Collectors.toList()); //排序后輸出 StudentInfo.printStudents(studentsSortName);
排序后結(jié)果

使用年齡進行降序排序,年齡相同再使用身高升序排序
//排序前輸出
StudentInfo.printStudents(studentList);
//按年齡排序(Integer類型)
List<StudentInfo> studentsSortName = studentList.stream()
.sorted(Comparator.comparing(StudentInfo::getAge).reversed().thenComparing(StudentInfo::getHeight))
.collect(Collectors.toList());
//排序后輸出
StudentInfo.printStudents(studentsSortName);
排序后結(jié)果

補充知識:JAVA實現(xiàn)將文字合成到指定圖片的指定位置(JAVA合成文本文字到圖片文件:附font字體不生效解決辦法)
實現(xiàn)效果如圖:

代碼如下:
參數(shù)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);
//設(shè)置字體顏色
g.setColor(Color.RED);
//size字體大小
g.setFont(new Font("STKaiti",Font.PLAIN,50));
//wideth控制字體距離右側(cè)邊緣距離 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");
}
}
有的同學可能發(fā)現(xiàn)設(shè)置字體的時候可能不生效,目前博主已發(fā)現(xiàn)的原因為字體名稱對應(yīng)不上導致
首先在你要進行合成操作的環(huán)境下執(zhí)行如下代碼,看看目前該環(huán)境已存在的字體有哪些,找到自己想要的字體對應(yīng)的名稱即可
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()的指定位置就可以了

比如紅色圈出來的就是字體仿宋和黑體對應(yīng)的名稱,博主試過輸入中文是不生效的。
如果不想在原圖片文件上直接修改,而是想根據(jù)原文件圖片,修改后生成新的文件圖片,修改代碼如下位置即可

以上這篇Java8 使用 stream().sorted()對List集合進行排序的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java如何自定義List中的sort()排序,用于日期排序
這篇文章主要介紹了java如何自定義List中的sort()排序,用于日期排序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
親測SpringBoot參數(shù)傳遞及@RequestBody注解---踩過的坑及解決
這篇文章主要介紹了親測SpringBoot參數(shù)傳遞及@RequestBody注解---踩過的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
Android Studio中ButterKnife插件的安裝與使用詳解
本篇文章主要介紹了Android Studio中ButterKnife插件的安裝與使用詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
深入理解Java運行時數(shù)據(jù)區(qū)_動力節(jié)點Java學院整理
這篇文章主要介紹了Java運行時數(shù)據(jù)區(qū)的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-06-06
Java 中的 Class.forName(類名) 使用及原理解析
Class.forName是Java中用于動態(tài)加載類的強大工具,廣泛應(yīng)用于數(shù)據(jù)庫驅(qū)動加載、反射機制和插件系統(tǒng)等場景,它通過ClassLoader加載類并執(zhí)行靜態(tài)初始化代碼,但在使用時需要注意類路徑、初始化副作用和類加載器的選擇等問題,感興趣的朋友一起看看吧2024-12-12

