编辑
2023-02-07
实用工具
00

mybaitsPlus的分页方式有很多,以下就简单介绍一下

两种都很方便,说明一下使用方法

1. 第一种代码展示

请求对象实体里需要定义page 和rows ,integer类型

@Override public PageInfo<RuRuleEntity> getRuleList(RuRuleReq request) { PageHelper.startPage(request.getPage(),request.getRows()); List<RuRuleEntity> list = baseMapper.selectAllRule(request); PageInfo<RuRuleEntity> pageInfo = new PageInfo<>(list); return pageInfo; }
编辑
2023-02-01
学习记录
00

单一List进行操作

public class StreamDemo { List<Student> list = null; //初始化数据 @Before public void beforetest() { list = Arrays.asList(new Student("Tom", 18, 88, 90), new Student("Jerry", 20, 77, 89), new Student("Lily", 17, 98, 79), new Student("Lucy", 19, 70, 80), new Student("LiLei", 18, 88, 90), new Student("HanMeiMei", 21, 87, 79)); } @Test public void streamtest() { // filter 过滤器返回还是一个stream流对象 //查询math成绩大于80的学生并遍历输出 list.stream().filter(e->e.getMath()>80).forEach(System.out::println);//.forEach(e->System.out.println(e)) //统计数量count System.out.println(list.stream().count()); //如统计总分大于160的人数 System.out.println(list.stream().filter(e->e.getEnglish()+e.getMath()>160).count()); //limit 取前n个值 list.stream().limit(3).forEach(System.out::println); //skip 跳过前n个 list.stream().skip(2).forEach(System.out::println); //distinct 去除重复数据 list.stream().distinct().forEach(System.out::println); //map 映射元素可以对元素进行操作 例如对每个学生年龄加1 list.stream().map(e->{ e.setAge(e.getAge()+1); return e; }).forEach(System.out::println); //sorted 排序 //升序 list.stream().sorted((a,b)->{ return a.getEnglish().compareTo(b.getEnglish()); }); //降序 list.stream().sorted((a,b)->{ return b.getEnglish().compareTo(a.getEnglish()); }); //返回第一个元素 Optional<Student> first = list.stream().findFirst(); System.out.println(first.get()); //返回任意一个元素 System.out.println(list.stream().findAny().get()); //anyMatch 是否匹配任意一元素 检查是否包含名字为Tom的 System.out.println(list.stream().anyMatch(e->e.getName().equals("Tom"))); //allMatch 是否匹配所有元素 System.out.println(list.stream().allMatch(e->e.getName().equals("Tom"))); //noneMatch 是否未匹配所有元素 System.out.println(list.stream().noneMatch(e->e.getName().equals("Tom"))); //findFirst 返回元素中第一个值 Student student = list.stream().findFirst().get(); //findAny 返回元素中任意一个值 Student student1 = list.stream().findAny().get(); //max 返回最大值 查询英语成绩最高的学生 Student student2 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get(); //min 最小值 将上面l1,l2位置对调 Student student3 = list.stream().max((l1,l2)->l2.getEnglish().compareTo(l1.getEnglish())).get(); //将流对象转为list list.stream().filter(e->e.getMath()>80).collect(Collectors.toList()); //将流转未set list.stream().filter(e->e.getMath()>80).collect(Collectors.toSet()); //对象中的某项进行统计 IntSummaryStatistics c = list.stream().collect(Collectors.summarizingInt(Student::getEnglish)); System.out.println(c); //IntSummaryStatistics{count=6, sum=507, min=79, average=84.500000, max=90} //获取list中的某两个元素 Map<String,String> map=list.Stream.collect(Collectors.toMap(Student::Name,Student::age)) //先过滤再获取list中的某两个元素 Map<String,String> map=list.Stream.filter(i->"张三".equals(i.getName)).collect(Collectors.toMap(Student::Name,Student::age))}} //把一个list对象的内容取出来,创建一个新的对象存进去,改为一个新的list List<StringSimilarityHanLPRequest> HanLPList=provinceDictEntities.stream().map(i->StringSimilarityHanLPRequest.builder().name(i.getOperProvinceName()).code(i.getOperProvinceCode()).build()).collect(Collectors.toList()); //将某个字符串对象取出转成字符串数组 String[] pictureIds = request.getSaveMetaDataMarkList().stream().map(i->i.getMarkPictureId()).toArray(String[]::new);
编辑
2022-12-29
学习记录
00

问题

经常看到基本数据类型存放位置的内容,有些就说基本类型都在栈中,有些说基本类型在堆中,这其实要分变量的类型来说明.

java基本数据类型是指byte, short, int, long, float, double, char, boolean这八种类型。它们的存放位置取决于它们的声明位置和作用域。一般来说,有以下几种情况:

如果基本数据类型是局部变量,那么它们存放在栈(stack)中。栈是每个线程独享的内存区域,用于存储方法调用时的参数和临时变量。栈中的变量随着方法的执行而创建和销毁,不需要垃圾回收。

如果基本数据类型是实例变量(也叫成员变量),那么它们存放在堆(heap)中。堆是所有线程共享的内存区域,用于存储对象和数组。堆中的变量随着对象的创建和销毁而分配和回收内存,需要垃圾回收。

如果基本数据类型是类变量(也叫静态变量),那么它们存放在方法区(method area)中。方法区也是所有线程共享的内存区域,用于存储类的信息,包括静态变量和常量。方法区中的变量随着类的加载和卸载而分配和回收内存,也需要垃圾回收。

下面是一些例子:

JAVA
int a = 10; //局部变量,存放在栈中 class Test { int b = 20; //实例变量,存放在堆中 static int c = 30; //类变量,存放在方法区中 } Test t = new Test(); //对象引用,存放在栈中,指向堆中的对象 int[] arr = new int[10]; //数组引用,存放在栈中,指向堆中的数组
编辑
2022-12-26
学习记录
00

介绍

从JDK1.5开始,为了把工作单元与执行机制分离开,Executor框架诞生了,他是一个用于统一创建与运行的接口。Executor框架实现的就是线程池的功能。

关系

Executor 是一个接口,定义了一个接收runnable对象的方法executor。

  • ExecutorSerivce 是Executor的子类接口,定义了一个接收Callable对象的方法,返回future对象
    • ScheduledExecutorSerivce 是ExecutorSerivce的子类接口
    • Executors 实现ExecutorService接口的静态工厂,用于创建线程池
    • AbstrctExecutorSerivce 是抽象类,提供ExecutorSerivce默认的方法实现
      • ThreadPoolExecutor继承abstrctExecutorService,用于创建线程池

      • ForkjoinPool 继承abstrctExecutorService,大任务分为小任务

编辑
2022-12-23
学习记录
00

需求前提

校验当前签收数量与本批送出数量是否一致,不一致给出缺少信息,关键词 两个list

代码展示

public List<RecMrIndexBySendOutBatchNoListResponse> saveBatchPaperRecevieByCheck(RecMrIndexReceiveRequest request) { List<RecMrIndexEntity> recMrIndexEntityList=request.getRecMrIndexEntities().stream() .filter(i->i.getSendOutBatchNo()!=null).collect(Collectors.toList()); List<RecMrIndexBySendOutBatchNoListResponse> checkResponseList=new ArrayList<>(); //去除重复的送出号,去除为null的 List<String> batchNoList = recMrIndexEntityList.stream().map(RecMrIndexEntity::getSendOutBatchNo).distinct().collect(Collectors.toList()); if (CollectionUtils.isEmpty(batchNoList)){ return checkResponseList; } for (int i = 0; i < batchNoList.size(); i++) { String batchNo =batchNoList.get(i); if (StrUtil.isNotBlank(batchNo)){ List<RecMrIndexEntity> list=recMrIndexEntityList.stream() .filter((recMrIndex)->recMrIndex.getSendOutBatchNo().equals(batchNo)) .collect(Collectors.toList()); List<RecMrIndexBySendOutBatchNoListResponse> selectResponseList =baseMapper.getListBySendOutBatchNo(batchNo); if(list.size()==selectResponseList.size()){ continue; }else{ RecMrIndexBySendOutBatchNoListResponse selectResponse; Iterator<RecMrIndexBySendOutBatchNoListResponse> iterator= selectResponseList.iterator(); while (iterator.hasNext()){ selectResponse= iterator.next(); for (RecMrIndexEntity oldEntity:list){ if (selectResponse.getPatientId().equals(oldEntity.getPatientId()) && selectResponse.getVisitNo().equals(oldEntity.getVisitNo())){ iterator.remove(); } } } //合并过滤后的数据 checkResponseList.addAll(selectResponseList); } } } //再去除一次重复数据 return checkResponseList.stream().distinct().collect(Collectors.toList());

这个代码块的主要是对于Steam流的一些简单使用,通过Stream流可以快速得到送出号的列表,并且去除重复元素和空元素,再采用迭代器去除和另一个List中相同的元素,得到新的列表