遍历Map时删除元素报错问题

问题:遍历时直接remove报异常 测试代码: Map<String, Integer> map = new HashMap<>(); map.put("a", 1); map.put("b", 2); map.put("c", 3); for (String key : map.keySet()) { if ("b".equals(key)) { map.remove(key); } } 运行时报错: j a v a . u t i l . C o n c u r r e n t M o d i f i c a t i o n E x c e p t i o n 原因排查 使用增强for循环时,底层其实使用的是 Iterator。 ...

March 18, 2025 · 1 min · Faithlv

String、StringBuilder区别测试

问题1:循环拼接字符串为什么变慢 测试代码: public class Test { public static void main(String[] args) { long start = System.currentTimeMillis(); String s = ""; for (int i = 0; i < 100000; i++) { s += i; } long end = System.currentTimeMillis(); System.out.println("耗时:" + (end - start)); } } 当循环次数变大时,耗时明显增加。 改成 StringBuilder: public class Test { public static void main(String[] args) { long start = System.currentTimeMillis(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < 100000; i++) { sb.append(i); } long end = System.currentTimeMillis(); System.out.println("耗时:" + (end - start)); } } 对比测试,多次运行后 StringBuilder 明显更快。 ...

December 26, 2024 · 1 min · Faithlv