常规JAVA、JDK积累

一:基本数据类型,集合

  • JDK8提供的Stream distinct(),提供去除重复元素功能。对于有序集合元素,可以通过Strem的distinct完成稳定去重。它是Strem的实现方法。例如对于一个List集合,可以通过
    List<String> list1 = Lists.newArrayList();
    List<String> list2 = Lists.newArrayList();
    list1 .add("1");
    list1 .add("3");
    list1 .add("2");
    list1 .add("2");
    list2 = list1.stream().distinct().collect(Collectors.toList())
     long l = list1.stream().distinct().count();

    完成去重,并通过Collectors转换为List或者Map等

  • 利用strem完成对List的操作:其中organizationList是一个Organization实体的集合,最终返回的List中只有每个实体的ID集合

    List<String> deptIdList = organizationList.stream()
                                                      .map(org -> org.getId())
                                                      .collect(Collectors.toList());

    此使用是指:讲一个organizationList中每一个organization的ID值转换成一个List<String>
        其中:1. List.stream:意思是将一个List转换成stream来处理
              2. stream.map是将List中的每一个organization元素拆分作为一个map来处理
              3. -> 兰姆达表达式,意思是对于List中的某个organization元素,传入形参org,返回org的Id值,  此时到这里,map中已经不再是实体的集合了,而是每个实体的ID集合
              4. .collect,此方法是将结果转换为List。
        最终结果就是List中每一个实体ID的集合。

  • List的.partition()方法,将list进行拆分

    List<Integer> numList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8);
     
            
    	List<List<Integer>> lists=Lists.partition(numList,3);
            
    	System.out.println(lists);//[[1, 2, 3], [4, 5, 6], [7, 8]];

    JAVA中Lists.partition方法,是指将一个集合进行切分,例如:将munList按照三个一组,切分成了三个集合组成的一个集合。

  • springboot框架中获取properties配置中的参数值:

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class DataSourceConfig {
    /**
	 * 超级管理员账号
	 */
	@Value("${com.kc.adminUserId}")
	private String adminUserId;

    //******
}

//properties中的配置:
//com.kc.adminUserId=84BBE6B0B59F49E6A2BBABE16B176363
  • BigDecimal的使用

 public BigDecimal add(BigDecimal value);//加法

public BigDecimal subtract(BigDecimal value); //减法 

public BigDecimal multiply(BigDecimal value); //乘法
public BigDecimal divide(BigDecimal value); //除法

 

二:工具类

  • UUID是JAVA中自动生成唯一识别码的工具类,能够随机生成一个32个16进制的字符,常用的方法是String uid = UUID.randomUUID().toString(). 然后将uid中的-替换成“”,使用String的方法进一步处理,就能用做唯一识别ID了。
    /***
         * 主键生成工具
         * ***/
        public static String generateKey32(){
            String uuId=  UUID.randomUUID().toString();
            uuId=uuId.replaceAll("-","").toUpperCase();
            return uuId;
        }

    生成唯一识别码

三: 框架类

  • spring的全局异常处理注解机制:
    @ControllerAdvice
    public class MyControllerAdvice {
    
        /**
         * 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
         * @param binder
         */
        @InitBinder
        public void initBinder(WebDataBinder binder) {}
    
        /**
         * 把值绑定到Model中,使全局@RequestMapping可以获取到该值
         * @param model
         */
        @ModelAttribute
        public void addAttributes(Model model) {
            model.addAttribute("author", "Magical Sam");
        }
    
        /**
         * 全局异常捕捉处理
         * @param ex
         * @return
         */
        @ResponseBody
        @ExceptionHandler(value = Exception.class)
        public Map errorHandler(Exception ex) {
            Map map = new HashMap();
            map.put("code", 100);
            map.put("msg", ex.getMessage());
            return map;
        }
    
    }

    此处异常捕捉是通过注解完成:

    • spring的全局异常处理方式:

      • 通过@ControllerAdvice或者@RestControllerAdvice,区别是一个返回视图,一个返回json数据。该注解作用在类上,表示该类是一个作用于全局的处理类。其中主要使用的注解为:
            -- @InitBinder:   应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
            -- @ModelAttribute: 把值绑定到Model中,使全局@RequestMapping可以获取到该值。对于所有被           @RequestMapping 注解的方法中,都可以通过 ModelMap 获取到该注解方法下的model对象值。
            -- @ExceptionHandler: 全局异常捕捉处理

  • spring中的事务管理:对于一个接口中的一个实现方法中,需要修改两条数据,切是关联性的,则需要如果某一个修改失败,则进行回滚,都失败。此时就需要事务管理。
        注解的方式:在springboot的启动类中添加@EnableTransactionManagement注解,并在需要进行事务管理的方法或者类中添加注解进行明示,此方法需要事务管理:
        @Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT, timeout = 36000, rollbackFor = Exception.class) 第一个参数:事务传播行为。第二个:隔离级别。第三个:timeout超时时间。第四个:rollbackFor:发生什么异常时进行回滚。也可以什么都不传参,均使用默认,并且回滚会按照运行时异常类和集成了该类的异常进行回滚
        详细介绍可以参考博文:https://blog.csdn.net/qq_39320953/article/details/77947947

 

四:JDK新特性

  • List.stream().collect(Collectors.groupingBy(Data::getName),此方法利用stream将list集合中所用的值按照name字段进行分组作为key,value为一个list,是所有name为该key的list集合。非常简单好用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值