目录
JSON格式转换
将java对象转换成json字符串
JSON.toJSONString
将json字符串转化为java对象
StringjsonStr="{\"name\":\"小明\",\"age\":20,\"address\":{\"province\":\"浙江\",\"city\":\"杭州\"}}";
JSONObjectjsonObj=JSONObject.parseObject(jsonStr);
将json对象转化为指定对象
StringjsonStr="{\"name\":\"小明\",\"age\":20,\"address\":{\"province\":\"浙江\",\"city\":\"杭州\"}}";
Studentstudent=JSONObject.parseObject(jsonStr, Student.class);
解析有日期格式的JSON字符串
StringjsonStr="{\"name\":\"小明\",\"age\":20,\"birthday\":\"1999-01-01\",\"address\":{\"province\":\"浙江\",\"city\":\"杭州\"}}";
SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");
JSON.parseObject(jsonStr, Student.class, newFeature{Feature.AllowISO8601DateFormat});
Studentstudent=JSONObject.parseObject(jsonStr, Student.class, newJsonD
解析带有特殊格式的JSON字符串
StringjsonStr="{\"name\":\"小鹏\",\"interest\":\"书法\\u270B\"}";
Studentstudent=JSONObject.parseObject(jsonStr, Student.class, Feature.SupportUnicode);
格式化日期输出
StringdateStr="2023-06-12";
Datedate=DateUtil.parse(dateStr);
//结果 2023/06/12
Stringformat=DateUtil.format(date, "yyyy/MM/dd");
//常用格式的格式化,结果:2023-06-12
StringformatDate=DateUtil.formatDate(date);
//结果:2023-06-12 00:00:00
StringformatDateTime=DateUtil.formatDateTime(date);
格式化日期
DatedNow=newDate( );
SimpleDateFormatft=newSimpleDateFormat ("yyyy-MM-dd hh:mm:ss");//2023-06-29 16:35:26 System.out.println("当前时间为: " + ft.format(dNow));
Lambda表达式的格式
(参数类型 参数名称) ->{代码语句}
java中stream流的用法
List<String>list=newArrayList<>();
list.add("张无忌");
list.add("周芷若");
list.add("赵敏");
list.add("张强");
list.add("张三丰");
list.stream()
.filter(s->s.startsWith("张"))
.filter(s->s.length() ==3)
.forEach(s->System.out.println(s));
}
stream流的常用方法
forEach遍历
//获取一个Stream流
Stream<String>stream= Stream.of("张三","李四","王五","赵六");
//使用Stream流的方法forEach对stream流中的数据遍历
stream.forEach((String name)->{ System.out.println(name);
});
2.filter过滤
Stream<String>stream=Stream.of("张三", "李四", "王五", "赵六1", "刘老七");
//单条件过滤
Stream<String>stream1=stream.filter((Stringname) -> {
returnname.startsWith("刘");
});
//多条件过滤
List<String>stream2=stream.filter((Stringname) -> {
if(name.length()>=3&&name.equals("刘老七")){
returntrue;
}
returnfalse;
}).collect(Collectors.toList);
3.distinct去重
//创建一个Stream流
Stream<String> stream = Stream.of("张三", "张三","张三","李四", "王五", "赵六1", "刘老七");
//去重
List<String> stream1 = stream().distinct().collect(Collectors.toList());
4.limit截取
//创建一个Stream流
Stream<String> stream = Stream.of("张三", "张三","张三","李四", "王五", "赵六1", "刘老七");
//去重
List<String> list = stream().distinct().collect(Collectors.toList());
//截取去重后的前2个元素
list = list.stream().limit(2).collect(Collectors.toList();
5.skip跳过
//创建一个Stream流
Stream<String>stream=Stream.of("张三", "张三","张三","李四", "王五", "赵六1", "刘老七");
//去重
List<String>list=stream().distinct().collect(Collectors.toList());
//跳过去重后的前2个元素
list=list.stream().skip(2).collect(Collectors.toList());
6.sorted排序
List<Test>list=newArrayList<>();
list.add(newTest("张三",23,newBigDecimal("3000"),newBigDecimal("1.1")));
list.add(newTest("李四",24,newBigDecimal("2800"),newBigDecimal("1.2")));
list.add(newTest("王五",22,newBigDecimal("3200"),newBigDecimal("1.3")));
//根据年龄从大到小排序
list=list.stream()
.sorted(Comparator.comparing(Test::getAge).reversed())//倒序排列
.collect(Collectors.toList());
list.forEach(System.out::println);
}
}
7.最值max,min
List<Test>list=newArrayList<>();
list.add(newTest("张三",23,newBigDecimal("3000"),newBigDecimal("1.1")));
list.add(newTest("李四",24,newBigDecimal("2800"),newBigDecimal("1.2")));
list.add(newTest("王五",22,newBigDecimal("3200"),newBigDecimal("1.3")));
//获取年龄最大的人
TestmaxPeople=list.stream().max(Comparator.companing(Test::getAge)).get();
//获取年龄最小的人
TestminPeople=list.stream().min(Comparator.companing(Test::getAge)).get();
8.统计reduce
List<Test>testList=newArrayList<Test>();
testList.add(newTest("小明",23,newBigDecimal("3000"),newBigDecimal("1.1")));
testList.add(newTest("小红",24,newBigDecimal("2800"),newBigDecimal("1.2")));
testList.add(newTest("小兰",22,newBigDecimal("3200"),newBigDecimal("1.3")));
//统计年龄总和
inttotalAge=testList.stream().mapToInt(Test::getAge).sum();
//统计工资总和
BigDecimaltotalSalary=testList.stream().map(Test::getSalary)
//统计工资乘以各自系数的总和(向上保留两位)
BigDecimaltotalRatioSalary=testList.stream()
.map(s->s.getSalary()
.multiply(s.getRatio())
.setScale(2,BigDecimal.ROUND_HALF_UP))
.reduce(BigDecimal.ZERO,BigDecimal::add);
9.List结构转换为Map结构
List<Test>List=newArrayList<Test>();
testList.add(newTest("张三",23,newBigDecimal("3000"),newBigDecimal("1.1")));
testList.add(newTest("李四",24,newBigDecimal("2800"),newBigDecimal("1.2")));
testList.add(newTest("王五",22,newBigDecimal("3200"),newBigDecimal("1.3")));
//根据姓名转map,map的key为name
Map<String, Test>nameMap=List.stream().collect(Collectors.toMap(Test::getName, Test->Test);
10.List<Object> 对象转List<String>
List<Test>testList=newArrayList<Test>();
testList.add(newTest("张三",23,newBigDecimal("3000"),newBigDecimal("1.1")));
testList.add(newTest("李四",24,newBigDecimal("2800"),newBigDecimal("1.2")));
testList.add(newTest("王五",22,newBigDecimal("3200"),newBigDecimal("1.3")));
//获取姓名集合
List<String>nameList=testList.stream().map(Test::getName()).collect(Collectors.toList());
11.List<Objct>对象转List<Object>
List<People>peopleList=newArrayList<People>();
peopleList.add(newPeople("张三",23,newBigDecimal("3000"),newBigDecimal("1.1")));
peopleList.add(newPeople("李四",24,newBigDecimal("2800"),newBigDecimal("1.2")));
peopleList.add(newPeople("王五",22,newBigDecimal("3200"),newBigDecimal("1.3")));
//对象转对象
List<Student>studentList=peopleList.stream().map(s->{
returnnewStudent(s.getName(),s.getAge());
}).collect(Collectors.toList());