本文共 3173 字,大约阅读时间需要 10 分钟。
1. 创建集合的时候,尽量指定大小,在遍历 map 的时候,尽量使用效率高些的 entrySet 方式
public void testMap(){ // 【集合初始化尽量指定大小】 Mapmap = new HashMap<>(6); map.put("第一","我的测试1"); map.put("第二","我的测试2"); map.put("第三",true); map.put("第四",0.1); map.put("第五",5.68D); map.put("第六","我的测试6"); // 遍历map 尽量注意用 entrySet 高效率 Set > entries = map.entrySet(); for (Map.Entry entry : entries) { String key = entry.getKey(); Object value = entry.getValue(); System.out.println(key+" "+value); } }
2.使用 Collection.isEmpty( ) 检测空
public void testCollection(){ // 应该使用Collection.isEmpty()检测空 Listdata = new ArrayList<>(); boolean empty = data.isEmpty(); }
3.循环拼接字符串 用 stringBuffer 或者 stringBuilder
public void testStringBuilder(){ // 线程不安全 StringBuilder stringBuilder = new StringBuilder(); // 线程安全 StringBuffer stringBuffer = new StringBuffer(); // 循环拼接字符串 用 stringBuffer 或者 stringBuilder for (int i = 0; i < 10; i++) { stringBuffer.append(" "+i); } System.out.println(stringBuffer.toString()); }
4. 如果在代码中需要频繁调用 contains 方法查找数据,可以先将 list 转换成 HashSet 实现,然后在调用 contains方法
public void testContains(){ /** * 在 java 集合类库中,List 的 contains 方法普遍时间复杂度是 O(n) , * 如果在代码中需要频繁调用 contains 方法查找数据,可以先将 list 转换成 HashSet 实现, * 将 O(n) 的时间复杂度降为 O(1) 。 */ Listlist = Arrays.asList(1, 2, 3, 4, 5, 6); Set set = new HashSet<>(list); for (int i = 0; i < 10; i++) { if(set.contains(i)){ System.out.println(i); } } }
5. 当要把其它对象或类型转化为字符串时,使用 String.valueOf(value)
public void testValueOf(){ // 当要把其它对象或类型转化为字符串时,使用 String.valueOf(value) Integer integer = 12; String str = String.valueOf(integer); System.out.println(str); }
6. 过时代码添加 @Deprecated 注解
@Deprecated public void testAnn(){ // 过时代码添加 @Deprecated 注解 }
7. 禁止使用构造方法 BigDecimal(double), BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。
public void testBig(){ // 禁止使用构造方法 BigDecimal(double) // BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常。 //反例: BigDecimal value = new BigDecimal(0.1D); // 0.100000000000000005551115... // 正例: BigDecimal value2 = BigDecimal.valueOf(0.1D);; // 0.1 // 加,减,乘,除 value.add(value2); value.subtract(value2); value.multiply(value2); value.divide(value2); }
8. 返回空数组和空集合而不是 null 。返回 null ,需要调用方强制检测 null ,否则就会抛出空指针异常。 返回空数组或空集合,有效地避免了调用方因为未检测 null 而抛出空指针异常,还可以删除调用方检测 null 的语句使代码更简洁。
9. 字符串 String 的 split 方法,传入的分隔字符串是正则表达式!部分关键字(比如.[]()\| 等)需要转义。
public void testSplit(){ // 字符串 String 的 split 方法,传入的分隔字符串是正则表达式!部分关键字(比如.[]()\| 等)需要转义。 // 反例: String[] split = "a.ab.abc".split(".");// 结果为[] "a|ab|abc".split("|"); // 结果为["a", "|", "a", "b", "|", "a", "b", "c"] // 正例: "a.ab.abc".split("\\."); // 结果为["a", "ab", "abc"] "a|ab|abc".split("\\|"); // 结果为["a", "ab", "abc"] }
转载地址:http://pqxxi.baihongyu.com/