Java集合框架详解:Set与List容器操作指南

需积分: 50 35 下载量 74 浏览量 更新于2024-08-18 收藏 1.77MB PPT 举报
"这篇文档是关于Java集合框架中List、Set和Vector的详解,特别是针对List的使用示例。在项目简单购物系统的情景下,介绍了如何选择合适的容器存储不同类型的对象,以及对集合进行基本操作如添加、删除、排序等。" 在Java编程中,集合容器类扮演着至关重要的角色,它们允许我们将不同类型的对象组织在一起,提供了丰富的操作方法。在给定的文件中,重点讨论了两种主要的集合类型:List和Set,以及一个过时但仍然使用的Vector。 1. **List**: List 是一个有序的集合,允许元素有重复。ArrayList 是 List 接口的一个常见实现,它基于动态数组,提供快速访问和修改元素的能力。例如: ```java List list = new ArrayList(); // 创建一个ArrayList list.add(new Integer(3)); // 添加元素 list.add(new Integer(4)); list.add(new Integer(3)); list.add(new Integer(2)); ``` 这里展示了如何声明并填充一个ArrayList,`add()`方法用于向列表中添加元素,`size()`方法返回列表中的元素数量,而`get()`方法用于获取指定索引处的元素。 2. **遍历List**:使用`iterator()`方法可以获取一个迭代器,通过迭代器可以遍历列表中的所有元素: ```java Iterator it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } ``` 3. **排序List**:`Collections`类提供了`sort()`方法,可以对List进行排序,如: ```java Collections.sort(list); ``` 之后再次遍历,元素将按升序排列。 4. **Set**: Set接口不允许重复元素,它通过对象的`equals()`方法来检查元素是否相同。有两个常见的Set实现:HashSet和TreeSet。 - **HashSet**: 基于哈希表实现,存取速度快,但不保证元素顺序。如果需要保持插入顺序,可以使用其子类`LinkedHashSet`。 - **TreeSet**: 实现了`SortedSet`接口,保证元素按特定顺序排列。它使用`compareTo()`或`Comparator`来排序元素,不允许有重复元素。 例如: ```java Set set = new HashSet(); String s1 = new String("Hello"); String s2 = s1; // 引用相同对象 String s3 = new String("world"); set.add(s1); set.add(s2); set.add(s3); System.out.println(set.size()); // 输出2,因为s1和s2指向相同的对象,所以只存了一个 ``` 在这个例子中,尽管我们添加了三个字符串,但由于`s1`和`s2`引用同一个对象,所以Set的大小为2。 5. **Vector**:虽然不再推荐使用,Vector与ArrayList类似,但它线程安全,但其性能通常低于非同步的ArrayList,因此在多线程场景下可以考虑使用。 在项目简单购物系统中,我们可以根据需求选择合适的集合类型。例如,如果需要保持商品插入的顺序,可以选择ArrayList或LinkedHashSet;如果需要避免重复商品且需要排序,那么TreeSet可能是更好的选择。同时,集合类提供的各种方法如`add()`、`remove()`、`sort()`等,可以帮助我们轻松地对购物车中的商品进行操作。