为什么要使用集合
存储多个数据可以使用数组,但由于数组在内存中是连续存储的,所以会有一些限制。比如数组在创建时就要指定长度,即可以容纳的元素个数,且指定后无法更改;数组在创建时需要指定元素的类型,并且所有元素都必须是该类型或其子类;添加或删除数组中的元素需要创建一个新数组再进行元素复制,比较麻烦。下面是 Person 数组扩容的示意代码。- // 给 people1 数组末尾添加一个元素
- public class PersonArray {
- public static void main(String[] args) {
- Person[] people1 = new Person[1];
- people1[0] = new Person();
- // 创建新数组
- Person[] people2 = new Person[people1.length + 1];
- // 复制 people1 数组的元素到 people2
- for (int i = 0; i < people1.length; i++) {
- people2[i] = people1[i];
- }
- // 添加新元素
- people2[people2.length - 1] = new Person();
- }
- }
复制代码 数组可以通过索引快速访问和操作元素,在许多场景下仍然是非常有用的,但如果需要动态调整大小或保存不同类型的元素,则可以考虑使用集合类来代替数组。集合类还提供了一系列增加、删除、修改和查找元素的方法。集合框架中还提供了多种优化和封装好的实现类,通过使用合适的集合类可以更高效地组织和操作数据。
集合框架体系
Java 的集合类很多,主要有Collection和Map两个接口,层次关系如下图。


Collection接口有List和Set这两个重要的子接口,它们的实现子类都是单列集合。其中List接口表示有序的、可以包含重复元素的集合,常见的实现类有ArrayList、LinkedList和Vector。Set接口表示无序的且不包含重复元素的集合,常见的实现类有HashSet、TreeSet和LinkedHashSet。
Map接口实现子类是双列集合,表示一组键值对的映射,其中每个键都是唯一的。常见的实现类有HashMap、Hashtable和Properties。- public class AddElements() {
- public static void main(String[] args) {
- ArrayList<Object> list = new ArrayList<>();
- list.add("黄蓉");
- list.add("郭靖");
- HashMap hashMap = new HashMap();
- hashMap.put("001", "黄蓉");
- hashMap.put("002", "郭靖");
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |