Java List集合的知识补充

看到黑马视频第4天数据库操作中,List<Person> personList=new ArrayList<person>();

实在不明白,就查了下Java课本,结果没提到。原来List是个系统一个接口。

原帖http://cq520.iteye.com/blog/1826788

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

常用的集合在系统中定义了两大接口,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()方法,但是这个方法是通过遍历结点来定位的,所以速度比较慢。

时间: 2024-11-05 19:51:44

Java List集合的知识补充的相关文章

java map集合的知识

/** * Map用于存储键值对,不允许键重复,值可以重复. * (1)HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度. * HashMap最多只允许一条记录的键为null,允许多条记录的值为null. * HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致. * 如果需要同步,可以用Collections.synchronizedMap(HashMap map)方法使Has

黑马程序员——Java集合基础知识之Map

Map概念 要同时存储两个元素Key和Value,他们之间有映射关系,每个键不能重复,每个键只能映射到一个值. 当数据之间存在映射关系的时候,考虑使用Map集合. Map常用方法 如果添加的键原来有值,后添加的值会覆盖前面的值,并返回之前的值.put会返回来先添加的值,后添加的值会覆盖原有的值. Map tm =new TreeMap(); tm.put (key, value);//MAP没有add tm.remove (key) ;//去除一个key和对应的value,若不存在key返回nu

黑马程序员——Java集合基础知识之Collection

集合基础知识--Collection Java中集合框架由常用的Collection接口和Map接口组成,而Collection接口又有两个子接口,是List接口和Set接口,常用的集合框架由这三个类组成. List接口的功能方法 List的使用最为简单,创建集合,通过add方法添加元素,get方法获取元素,通过迭代器获取元素.List接口存放的数据无序的,添加速度快,但是查询速度慢,因为查询的时候必须遍历,每次都重头开始,效率较低.常用实现类有ArrayList,LinkedList. Lis

黑马程序员------java基础----集合

  ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------  集合框架 为什么会出现这么多容器? 因为每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构. 一.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存

Java语言的基础知识12

第十四章(使用集合类保存对象) 1.java中得集合对象就像是一个容器,它用来存放Java类的对象.Java中的集合类有些方便存入和取出,有些则方便查找.集合类和数组的区别是,数组的长度是固定的,集合的长度是可变的,数组用来存放基本类型,集合用来存放对象的引用.常用的集合类有List集合,Set集合,和Map集合. 2.List集合包括List接口以及List接口的所有实现类.List集合中的元素许重复,个元素的顺序就是对象插入的顺序.类似java中的数组.List类继承了Collection接

[转]在线学习java资料集合

原文链接: fromdev 翻译: ImportNew.com- 赖 信涛译文链接: http://www.importnew.com/11910.html[ 转载请保留原文出处.译者和译文链接.] 本文由 ImportNew - 赖 信涛 翻译自 fromdev.欢迎加入Java小组.转载请参见文章末尾的要求. 你想学习Java吗?来对地方了!这篇文章将会介绍很多高质量的免费资源,包括网页.论坛.电子书和速查表. Java是一种面向对象的编程语言,拥有独立.多线程.安全.动态和健壮的特点.归功

黑马程序员——集合基础知识(Map)

Map概念 要同时存储两个元素,他们之间有映射关系,每个键不能重复,每个键只能映射到一个值. 存储键值对,并且键是唯一的. 1.添加. put()如果添加的键原来有值,后添加的值会覆盖前面的值,并返回之前的值. 2.删除 remove()按键删除. 3.判断 4.获取 get(object key) size() value()拿值value返回的是值的集合... HashTable 底层是哈西数据结构,不可以存入null键null值,线程同步. HashMap 底层是哈西表数据结构,允许使用n

Java 代码的基本知识(摘)

(摘自:Java经典入门教程) http://wenku.baidu.com/link?url=IoWI58cD5vzeHN-NL4pN7Gren-RfzydrhjDlETAByC9L-9ANinyLwuWChpWiYC3hQhzpws5fV2fuH-k1zp4iXh6AFVkpibvtDfLpBvwp1tC 五:Java 代码的基本知识1:语句用分号”;”结尾的一行代码就是语句,Java 中语句必须以”;”结尾.如:int a = 10;可以有块语句,例如:int i=0;{int j = 0

java的集合框架最全详解

java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework). Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这