Java8使⽤stream().sorted()对List集合进⾏排序的操
作
1、声明⼀个测试对象
import java.time.LocalDate;
import java.util.List;
import lombok.Data;
@Data
public class StudentInfo{
//名称
java集合排序怎么实现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(Comparatorparing(StudentInfo::getAge)).List());
//排序后输出
StudentInfo.printStudents(studentsSortName);
排序后结果
使⽤年龄进⾏降序排序(使⽤reversed()⽅法)
//排序前输出
StudentInfo.printStudents(studentList);
//按年龄排序(Integer类型)
List<StudentInfo> studentsSortName = studentList.stream().sorted(Comparatorparing(StudentInfo:
:getAge).reversed()).List());
//排序后输出
StudentInfo.printStudents(studentsSortName);
排序后结果
使⽤年龄进⾏降序排序,年龄相同再使⽤⾝⾼升序排序
//排序前输出
StudentInfo.printStudents(studentList);
//按年龄排序(Integer类型)
List<StudentInfo> studentsSortName = studentList.stream()
.sorted(Comparatorparing(StudentInfo::getAge).reversed().thenComparing(StudentInfo::getHeight))
.List());
/
/排序后输出
StudentInfo.printStudents(studentsSortName);
排序后结果
补充知识:JAVA实现将⽂字合成到指定图⽚的指定位置(JAVA合成⽂本⽂字到图⽚⽂件:附font字体不⽣效解决办法)实现效果如图:
代码如下:
参数s1,s2分别代表你想要合成到图⽚中的⽂字信息,如需多个可⾃⾏进⾏修改
import com.dec.jpeg.JPEGCodec;
import com.dec.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 = ad(file);
int Width(null);
int Height(null);
BufferedImage image=new BufferedImage(wideth,height,BufferedImage.TYPE_INT_RGB);
Graphics ateGraphics();
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 = ateJPEGEncoder(out);
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集合进⾏排序的操作就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论