1、list直接remove不存在的值不会报错
public static void test1() {
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
// 删除不存在的元素,返回false
System.out.println(list.remove("3"));
// 删除存在的元素,返回true
System.out.println(list.remove("1"));
}
这里有一个有趣的bug:
使用 Arrays.asList(“1”,“2”); 创建的list使用 remove和add 方法会报错 java.lang.UnsupportedOperationException
代码块:
public static void test2() {
List<String> list = Arrays.asList("1", "2", "3");
System.out.println(list.remove("3"));
System.out.println(list.remove("1"));
list.add("3");
System.out.println(list);
}
执行结果:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at java.util.AbstractList$Itr.remove(AbstractList.java:374)
at java.util.AbstractCollection.remove(AbstractCollection.java:293)
at com.wqguo.list.Demo.test2(Demo.java:34)
at com.wqguo.list.Demo.main(Demo.java:13)
原因如下:
调用Arrays.asList()产生的List中的add、remove方法报异常,是因为Arrays.asList()返回的List实现类是自己内部实现的ArrayList,不是我们常用的java.util.ArrayList。Arrays的内部类ArrayList和java.util.ArrayList都是继承AbstractList,但是在Arrays的内部类ArrayList中没有重写AbstractList的add和remove方法。
AbstractList中add和remove方法都是默认throw UnsupportedOperationException的。
2、增强for循环如果list为null会报java.lang.NullPointerException
public static void main(String[] args) {
List<String> list = null;
for (String s : list) {
System.out.println("jksdlf");
}
// 可以使用这种代码替换
Optional.ofNullable(list).orElse(new ArrayList<>()).forEach(s->{
System.out.println("jlskjdlfk");
});
}
3、判断多个String类型参数任意为空时可以使用StringUtils.isAnyBlank()方法
public static void main(String[] args) {
String mobile = "";
String name = "jslkdf";
System.out.println(StringUtils.isAnyBlank(mobile, name));
}
4、利用Optional来解决list为空产生NullPointerException
利用optional就可以不用判断list是否为空文章来源:https://www.toymoban.com/news/detail-446496.html
Optional.ofNullable(list).orElse(new ArrayList<>()).stream().collect(Collectors.toList());
5、利用MessageFormat来格式化字符串的输出
public static String test1() {
String USER_APP_SMS_CAPTCHA_KEY = "app:captcha:{0}:{1}";
String mobile = "11111111";
Integer type = 1;
String format = MessageFormat.format(USER_APP_SMS_CAPTCHA_KEY, mobile, type);
return format;
}
6、在工作中开发尽量在测试前将代码优化好
不然前期没有优化代码,最后自己都不敢去改了,本来没有bug的代码容易改出代码。文章来源地址https://www.toymoban.com/news/detail-446496.html
到了这里,关于技术日志2023-5-15的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!