大家知道,集合框架是为了表示和操作集合而规定的一种统一的标准的体系结构,学习集合知识有利于我们解决一系列例如保存数据与对象的问题。
常用的集合在系统中定义了两大接口,List和Set
这里我们就来讨论一下List 的定义以及一些常见的问题
List定义的是有序的并且数据可以重复的集合,我们先看一下下面这段代码:
import java.util.ArrayList;
import java.util.List;
publicclass ListTest{
publicstaticvoid main(String args[]){
ListTest lt=new ListTest();
List list=new ArrayList();
for(int i=0;i<5;i++){
list.add(i);
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
}
这段代码在Eclipse中是可以运行的,但是我们在cmd(命令提示符)中编译这段代码的时候就会发现,上面会显示这样一段文字
注: ListTest.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
这说明我们在List定义的时候没有指定类型,而Eclipse在执行的时候自动为List指定了泛型,所以在编译的时候才不会出错,为了解决这样的错误,我们应该这样定义
List<Object> list=new ArrayList<Object>();
这里所说的有序并不是说在List定义好之后,里面的元素就已经排好顺序,而是按照List中插入元素的顺序。在List定义的时候,我们要使用List的实现类,上面一段代码已经展示了ArrayList的实现方法,这里的ArrayList就像我们所熟悉的数组,里面也包含了包括数组的插入,添加元素等等操作,需要注意的是,由于ArrayList采用的是线性操作,从性能的观点来看,在很多实现中,它们将执行高开销的线性搜索。
ArrarList中的构造方法里面写的一句话很有意思,ArrayList
()
是构造一个初始容量为 10 的空列表。但是我们如果不对ArrayList中添加元素,如下:
import java.util.ArrayList;
import java.util.List;
publicclass ListTest{
publicstaticvoid main(String args[]){
List<Object> list=new ArrayList<Object>();
System.out.println(list.size());
}
}
我们会发现输出的list长度并不是10,而是0;这是由于size方法返回的是List中的元素的个数,而我们并没有对List中添加元素,所以长度为0。
为了解决ArrayList中的插入与删除操作所进行的时间复杂度较大的队列重新排序的操作,我们可以定义LinkedList来实现List方法,当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样,所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。
注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须保持外部同步。
所以,这样所实现的List是不能随即访问的,虽然提供了get()方法,但是这个方法是通过遍历结点来定位的,所以速度比较慢。
相关推荐
在Java编程语言中,`List`是集合框架的一部分,它是一个有序的集合,允许重复元素。`List`接口位于`java.util`包下,继承自`Collection`接口,并且实现了`Iterable`接口,使得我们可以使用增强型for循环来遍历列表。...
本章PDF课件详细讲解了这些概念,并可能包括实例代码演示、性能分析以及各种操作的注意事项,旨在帮助学习者深入理解并熟练运用Java集合框架。通过学习,开发者可以更高效地管理内存资源,优化程序性能,解决实际...
在Java编程过程中,掌握一些关键的注意事项至关重要,这不仅能提高代码质量,还能避免常见的编程陷阱。以下是一些关于"JAVA注意事项"的详细说明: 1. **命名规范**:Java有严格的命名规则,类名应使用驼峰式命名,...
Java集合框架主要包括三种主要类型的容器:`List`、`Set` 和 `Map`,以及一些辅助接口和类。这些容器提供了存储和操作对象的不同方式,能够满足各种不同的需求。 ##### 1. List `List` 是一个有序的容器,可以重复...
Java中的Map接口是Java集合框架的重要组成部分,它用于存储键值对的数据结构,其中每个键都是唯一的,并且与一个值相关联。Map集合不同于List,因为它不维护元素的顺序,而是通过键来访问其对应的值。本文将详细介绍...
- **List**:`List`是Java集合框架的一部分,用于存储元素的有序集合。`List`接口的一个具体实现是`ArrayList`。 - **String**:`String`类代表字符序列,是不可变的对象。`String`对象一旦创建后,其内容就不能改变...
在Java的持久化框架Hibernate中,集合映射是将数据库中的表与Java对象的集合属性关联的过程。List集合映射是其中常见的一种方式,它允许我们将数据库中的一组相关记录映射到Java对象的List列表中。这种映射机制使得...
除了标准的集合框架之外,Java 还包含了一些历史遗留的集合类,如 `Vector`, `Stack`, `Hashtable` 等,这些类虽然已经不再推荐使用,但在老代码中仍然常见。它们的特点主要是线程安全,但性能较低。 #### 五、算法...
2. **集合框架**:Java集合框架是处理对象集合的重要工具,包括`List`、`Set`、`Map`接口及其实现,如`ArrayList`、`HashSet`、`HashMap`等。理解它们的特性和应用场景,有助于编写高效的数据存储和处理代码。 3. *...
6. **集合框架**:`java.util`包中的集合框架,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap),它们提供了丰富的数据结构和操作方法。 7. **输入/输出(I/O)**:...
- 集合框架:List、Set、Map接口及其实现类的理解与比较,如ArrayList、LinkedList、HashSet、HashMap等。 - 泛型的概念及使用,通配符上限、下限的使用场景。 5. **字符串** - String、StringBuilder、...
6. Java集合框架:包括List、Set、Map等接口以及实现这些接口的类,例如ArrayList、LinkedList、HashSet、TreeSet、HashMap、Hashtable等。面试官可能会问到它们的特性、性能比较、使用场景等。 7. Java中的异常...
在早期Java集合框架中,集合中可以存储任意类型的对象,这使得在编译期无法检查类型安全,容易引发ClassCastException。为了解决这个问题,Java引入了泛型机制,允许在编译期检查类型安全。 下面是一个简单的示例...
"使用说明.htm":这个文件很可能是关于如何使用JAVA2API的手册或者指南,它会详细解释如何查阅API文档,如何在代码中引用API,以及一些常见的使用技巧和注意事项。阅读这份说明书,可以帮助你快速掌握查找和利用API...
4. **集合框架**:Java集合框架是存储和操作对象的重要工具,包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现。案例会解释如何使用这些集合以及它们的特性。 5. **多线程**:...
接着,会讲解Java集合框架,如List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。学习者将了解如何有效地存储和操作数据集合。 第4章:异常处理 异常处理是Java程序健壮性的重要组成部分...
4. **集合框架**:Java集合框架包括List、Set、Queue等接口和ArrayList、LinkedList、HashSet、HashMap等实现类。PPT会详细解析它们的用途、特点及操作方法,这对于处理数据至关重要。 5. **IO流**:Java的I/O流...
10. **集合框架**:深入分析了Java集合框架,如List、Set、Map接口和它们的实现类。讲解了如何选择合适的集合类型,以及使用迭代器、Lambda表达式和Stream API进行高效操作。 11. **并行与并发**:介绍了Java的并发...