java中格式转换以及stream的使用

目录

JSON格式转换

将json字符串转化为java对象

将json对象转化为指定对象

解析有日期格式的JSON字符串

解析带有特殊格式的JSON字符串

格式化日期输出

格式化日期

java中stream流的用法

forEach遍历

2.filter过滤

3.distinct去重

4.limit截取

5.skip跳过

6.sorted排序

7.最值max,min

8.统计reduce

9.List结构转换为Map结构

10.List对象转List

11.List对象转List


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());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值