Java日常笔记[2024-02-22]

1、循环遍历集合中进行删除元素,触发快速失败

//这是一颗语法糖,编译后相当于:
for(Iterator i = lists.iterator();i.hasNext();){
    String s = (String)i.next();
    if(s.startsWith("1")){
        list.remove(s);
    }
}
//正确的做法
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
    String item = iterator.next();
    if (item.startsWith("1")) {
        iterator.remove();
    }
}
list.removeIf(item -> item.startsWith("1"));

2、JDK8 时间类 练习

3、ThreadLocal 类的使用,因为是弱引用,如果外部没有引用ThreadLocal,则Entry中的key值被

​ 摧毁成null,导致value值一直不会被访问到,导致一直占用内存,所以当ThreadLocal使用完毕,要进行 remove或者clear等操作,防止内存泄露

4、JDK14 record与Lombok对比

​ record是 JDK14版本,新出的语义特性,对于创建小型不可变的对象有作用。

​ 总的来说,Lombok更加灵活,record用于受限制的场景

//使用record
public record ColorRecord(int red, int green, int blue) {
 
    public String getHexString() {
        return String.format("#%02X%02X%02X", red, green, blue);
    }
}

//使用lombok
@Value
public class ColorValueObject {
    int red;
    int green;
    int blue;

    public String getHexString() {
        return String.format("#%02X%02X%02X", red, green, blue);
    }
}

5、检测Maven是否有想用依赖不同版本的jar包

命令:mvn dependency:tree

mvn dependency:analyze-duplicate

上面两者都会在控制台,打印出相关重复的依赖包名称

在pom.xml文件中加入 规则,

可以对构建Maven进行约束,如果存在重复就会构建失败。

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>no-duplicate-declared-dependencies</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicatePomDependencyVersions/>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值