Java集合框架详解:Set、List与Map实例解析

5星 · 超过95%的资源 0 下载量 178 浏览量 更新于2024-09-01 收藏 363KB PDF 举报
Java集合框架是Java编程语言中的一个核心特性,它提供了一种高效存储和操作数据的方式。在Java中,集合大致分为三类:Set、List和Map,它们都是Collection接口的子接口或实现类。 1. Set集合 Set接口代表不包含重复元素的集合,而且它不允许有重复的元素。Set接口的主要实现类有HashSet、LinkedHashSet和TreeSet。HashSet是最基本的Set实现,它不保证元素的顺序,允许使用null元素。LinkedHashSet则保持了插入元素的顺序,而TreeSet则按照元素的自然排序或者自定义比较器进行排序。 例如,在给定的代码片段中,我们创建了一个HashSet,并尝试添加相同的Person对象和字符串对象。由于HashSet不允许重复,所以第二次添加的元素不会被添加到集合中,因此输出结果只显示了一个元素。 ```java Collection c1 = new HashSet<>(); c1.add(p); c1.add(p); System.out.println(c1); // [demo.Person@1db9742] ``` 这里的"demo.Person@1db9742"是对象的默认toString()输出,表示一个Person对象的内存地址。 1. List集合 List接口代表有序的集合,允许元素重复。List接口的主要实现类有ArrayList、LinkedList和Vector。ArrayList基于动态数组实现,适合于随机访问,而不适合频繁插入删除;LinkedList基于双向链表,适合于频繁插入删除,但随机访问效率低;Vector与ArrayList类似,但是线程安全,性能较低。 2. Map集合 Map接口不是Collection的子接口,但它提供了键值对的存储。Map接口的主要实现类有HashMap、LinkedHashMap、TreeMap和Hashtable。HashMap是基于哈希表的Map实现,不保证key-value的顺序,非线程安全;LinkedHashMap保持了元素的插入顺序,或者根据访问顺序进行排序;TreeMap则根据key的自然排序或自定义比较器进行排序;Hashtable与HashMap类似,但是线程安全。 例如,如果我们创建一个HashMap并添加键值对: ```java Map<String, String> map = new HashMap<>(); map.put("key1", "value1"); map.put("key2", "value2"); System.out.println(map); // {key1=value1, key2=value2} ``` 在Map中,键(key)必须是唯一的,而值(value)可以重复。 总结来说,Java集合框架提供了丰富的数据结构和算法,使得开发者能够根据需求选择合适的集合类型来存储和处理数据。在实际开发中,理解这些集合的特点和使用场景对于编写高效、可维护的代码至关重要。在使用集合时,还需要注意线程安全问题,如果在多线程环境中操作集合,可能需要考虑使用线程安全的集合类,或者在合适的地方加锁来确保数据一致性。