Avatar ·

HashMap、LinkedHashMap 和 TreeMap 在 Java 中的区别是什么?

大家好!我刚开始学习 Java,在使用 Map 时遇到了问题。主要有三种实现:HashMap、LinkedHashMap 和 TreeMap。我读了文档,但还是不完全理解什么时候该用哪一个。

例如,我有一个任务:需要存储学生列表及其 ID(键为 Integer,值为 String)。我写了这样的代码:

Map<Integer, String> students = new HashMap<>();
students.put(3, "安娜");
students.put(1, "伊万");
students.put(2, "玛丽亚");
System.out.println(students);

输出是无序的:{1=伊万, 2=玛丽亚, 3=安娜}。为什么顺序与插入顺序不一致?如果我把 HashMap 换成 LinkedHashMap 或 TreeMap 会怎样?

另外,我听说它们的性能不同。在哪些情况下 HashMap 更快,什么时候更适合用 TreeMap?它们如何处理 null 键?

希望能得到详细的解释和示例,以便我