Java8 使用 stream().sorted()對List集合進(jìn)行排序的操作
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ù)的嚴(yán)謹(jǐn)性 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))); 使用年齡進(jìn)行升序排序 //排序前輸出 StudentInfo.printStudents(studentList); //按年齡排序(Integer類型) List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparator.comparing(StudentInfo::getAge)).collect(Collectors.toList()); //排序后輸出 StudentInfo.printStudents(studentsSortName);
排序后結(jié)果
使用年齡進(jìn)行降序排序(使用reversed()方法)
//排序前輸出 StudentInfo.printStudents(studentList); //按年齡排序(Integer類型) List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparator.comparing(StudentInfo::getAge).reversed()).collect(Collectors.toList()); //排序后輸出 StudentInfo.printStudents(studentsSortName);
排序后結(jié)果
使用年齡進(jìn)行降序排序,年齡相同再使用身高升序排序
//排序前輸出 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分別代表你想要合成到圖片中的文字信息,如需多個可自行進(jìn)行修改
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"); } }
有的同學(xué)可能發(fā)現(xiàn)設(shè)置字體的時候可能不生效,目前博主已發(fā)現(xiàn)的原因為字體名稱對應(yīng)不上導(dǎo)致
首先在你要進(jìn)行合成操作的環(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集合進(jìn)行排序的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot指標(biāo)監(jiān)控及日志管理示例詳解
Spring Boot Actuator可以幫助程序員監(jiān)控和管理SpringBoot應(yīng)用,比如健康檢查、內(nèi)存使用情況統(tǒng)計、線程使用情況統(tǒng)計等,這篇文章主要介紹了Spring?Boot指標(biāo)監(jiān)控及日志管理,需要的朋友可以參考下2023-11-11idea 普通文件夾 轉(zhuǎn)換成 module操作
這篇文章主要介紹了idea 普通文件夾 轉(zhuǎn)換成 module操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08使用Java判定一個數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)
這篇文章主要給大家介紹了關(guān)于使用Java判定一個數(shù)值是否在指定的開閉區(qū)間范圍內(nèi)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-09-09JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決
這篇文章主要介紹了JSON序列化導(dǎo)致Long類型被搞成Integer的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01spring項目對某條單據(jù)進(jìn)行加鎖處理的方法
這篇文章主要給大家介紹了關(guān)于spring項目對某條單據(jù)進(jìn)行加鎖處理的相關(guān)資料,用于對工單單據(jù)進(jìn)行加鎖和解鎖處理,以防止多用戶同時編輯同一單據(jù),前端傳遞參數(shù)包括單據(jù)ID、類型、鎖超時時間等,后端通過Redis實現(xiàn)鎖機制,需要的朋友可以參考下2024-11-11IntelliJ IDEA優(yōu)化配置的實現(xiàn)
這篇文章主要介紹了IntelliJ IDEA優(yōu)化配置的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Spring通過<import>標(biāo)簽導(dǎo)入外部配置文件
之前文章里我們講到Spring加載Xml配置文件的細(xì)節(jié),那么加載完了我們肯定要解析這個配置文件中定義的元素。這篇我們首先來分析下Spring是如何通過標(biāo)簽導(dǎo)入外部配置文件的。2021-06-06SpringBoot如何利用Twilio?Verify發(fā)送驗證碼短信
Twilio提供了一個名為?Twilio?Verify?的服務(wù),專門用于處理驗證碼的發(fā)送和驗證,下面我們就來看看如何使用Twilio?Verify實現(xiàn)發(fā)送驗證碼短信吧2025-03-03