`
cq520
  • 浏览: 165454 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java集合框架中List的定义以及一些注意事项

阅读更多

       大家知道,集合框架是为了表示和操作集合而规定的一种统一的标准的体系结构,学习集合知识有利于我们解决一系列例如保存数据与对象的问题。

       常用的集合在系统中定义了两大接口,ListSet

这里我们就来讨论一下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注意事项

    在Java编程过程中,掌握一些关键的注意事项至关重要,这不仅能提高代码质量,还能避免常见的编程陷阱。以下是一些关于"JAVA注意事项"的详细说明: 1. **命名规范**:Java有严格的命名规则,类名应使用驼峰式命名,...

    java中map集合的用法

    Java中的Map接口是Java集合框架的重要组成部分,它用于存储键值对的数据结构,其中每个键都是唯一的,并且与一个值相关联。Map集合不同于List,因为它不维护元素的顺序,而是通过键来访问其对应的值。本文将详细介绍...

    Java API.tar JAVA AP学习JAVA必备手册

    2. **集合框架**:Java集合框架是处理对象集合的重要工具,包括`List`、`Set`、`Map`接口及其实现,如`ArrayList`、`HashSet`、`HashMap`等。理解它们的特性和应用场景,有助于编写高效的数据存储和处理代码。 3. *...

    java的中文帮助文档

    6. **集合框架**:`java.util`包中的集合框架,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如HashMap和TreeMap),它们提供了丰富的数据结构和操作方法。 7. **输入/输出(I/O)**:...

    Java面试资料集合

    - 集合框架:List、Set、Map接口及其实现类的理解与比较,如ArrayList、LinkedList、HashSet、HashMap等。 - 泛型的概念及使用,通配符上限、下限的使用场景。 5. **字符串** - String、StringBuilder、...

    java课程1到7章课件java课程1到7章课件

    接着,会讲解Java集合框架,如List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。学习者将了解如何有效地存储和操作数据集合。 第4章:异常处理 异常处理是Java程序健壮性的重要组成部分...

    Java泛型定义与用法实例详解

    在早期Java集合框架中,集合中可以存储任意类型的对象,这使得在编译期无法检查类型安全,容易引发ClassCastException。为了解决这个问题,Java引入了泛型机制,允许在编译期检查类型安全。 下面是一个简单的示例...

    JAVA2api.rar

    "使用说明.htm":这个文件很可能是关于如何使用JAVA2API的手册或者指南,它会详细解释如何查阅API文档,如何在代码中引用API,以及一些常见的使用技巧和注意事项。阅读这份说明书,可以帮助你快速掌握查找和利用API...

    java案例精粹150例

    4. **集合框架**:Java集合框架是存储和操作对象的重要工具,包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现。案例会解释如何使用这些集合以及它们的特性。 5. **多线程**:...

    java面试题经典集合

    5. **集合框架**:List、Set、Queue和Map接口及其实现类的特性和使用场景,如ArrayList、LinkedList、HashSet、HashMap等,以及它们的性能比较和操作注意事项。 6. **多线程**:线程的创建方式(Thread类和Runnable...

    EFFECT JAVA 中文

    10. **集合框架**:深入分析了Java集合框架,如List、Set、Map接口和它们的实现类。讲解了如何选择合适的集合类型,以及使用迭代器、Lambda表达式和Stream API进行高效操作。 11. **并行与并发**:介绍了Java的并发...

    Java开发者年鉴

    Java集合框架是处理数据结构的关键,包括List、Set、Map等各种接口和其实现类,如ArrayList、LinkedList、HashSet、HashMap等。学习如何高效地操作和管理这些数据结构,能够极大地提高代码的可读性和性能。 此外,...

    j2EE面试题分类集合

    - **集合框架**:List、Set、Map接口的实现类如ArrayList、HashSet、HashMap的特性和使用。 - **多线程**:线程的创建方式、同步机制(synchronized、wait/notify、Lock等)及并发工具类。 2. **Java Web**: - ...

    Thinking in Java 3th Edition_with_code

    7. **集合框架**:Java集合框架包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。书中会详细讲解它们的使用方法和应用场景。 8. **泛型**:泛型是Java 5.0引入的新特性,用于增强...

    java api 完整版

    6. **集合框架**:`java.util`包下的`Collection`和`Map`接口,以及它们的实现类,如List、Set、Queue和Dictionary,是Java处理数据集合的重要工具。 7. **IO与NIO**:除了传统的IO流,Java 1.4引入了`java.nio`包...

    corejava api pdf

    2. **集合框架**:Java集合框架包括List、Set和Map接口,以及实现这些接口的类,如ArrayList、LinkedList、HashSet、HashMap等。它们为存储和操作对象提供了一种灵活的方式。 3. **I/O流**:Java的I/O流体系结构...

    java2实例教程案例

    5. **集合框架**:Java集合框架包括数组、接口(如List、Set、Map)以及实现这些接口的类,如ArrayList、LinkedList、HashSet、HashMap等。它们提供了存储和管理对象的有效方式。 6. **输入输出流(IO流)**:Java...

    java api学习文档

    2. **集合框架**:`List`、`Set`和`Map`接口及其实现,如`ArrayList`、`HashSet`和`HashMap`,它们是数据存储和操作的核心。 3. **异常处理**:理解和使用`try-catch-finally`语句块,以及如何创建自定义异常。 4....

    java面试会问些什么 (2).pdf

    在Java求职面试中,面试官通常会关注候选人的基础知识、编程能力以及对Java集合框架的理解。以下是一些Java面试中常见的问题和知识点: 1. **接口与集合**: - **接口**:面试官可能会询问你对Java接口的理解,...

    Thinking in Java

    3. **集合框架**:Java集合框架是处理对象数组的重要工具,包括List、Set、Queue、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。书中会介绍它们的使用方式和选择原则。 4. **多线程**:Java...

Global site tag (gtag.js) - Google Analytics