java list用法示例详解

|--List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引,
  |-- ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步
  |-- LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)
  |-- Vector:底层是数组数据结构 线程同步(数组长度是可变的百分之百延长)(无论查询还是增删都很慢,被ArrayList替代了)

List:特有的方法,凡是可以操作角标的方法都是该体系特有的方法




复制代码 代码如下:

boolean add(int index, E element)
boolean addAll(index,Collection)

复制代码 代码如下:

public static void List_add(){
     ArrayList a1 = new ArrayList();
     a1.add("java");
     a1.add("php");//List集合中的元素可以重复
    a1.add(".net");
     System.out.println("原集合:"+a1);
     a1.add(1, "Flash");
     a1.add(0, "ps");   
     System.out.println(a1);

ArrayList a2 = new ArrayList();
    a2.add("javascript");
    a2.add("3dMax");
    a2.add("IBM");

a1.addAll(0, a2);
    System.out.println(a1);
}

删除指定位置的元素


复制代码 代码如下:

boolean remove(int index)

复制代码 代码如下:

public static void List_remove(){
     ArrayList a1 = new ArrayList();
     a1.add("javascript");
     a1.add("php");
     a1.add("flash");
     System.out.println("原集合:"+a1);

a1.remove(0);
     System.out.println(a1);
}

修改指定角标的元素  set(int index, E element)  返回的是修改的那个元素

复制代码 代码如下:

public static void List_set() {
     ArrayList a1 = new ArrayList();
     a1.add("javascript");
     a1.add("php");
     a1.add(".net");
     System.out.println("原集合:"+a1);

a1.set(1, "falsh");
     System.out.println(a1);
}




复制代码 代码如下:

get(int index)   返回列表中指定位置的元素
subList(int fromIndex, int toIndex)    返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分元素。

复制代码 代码如下:

public static void List_get() {
     ArrayList a1 = new ArrayList();
     a1.add("java");
     a1.add("php");
     a1.add("flash");

System.out.println(a1.get(0));//获取指定角标的元素,有了该方法就可以遍历该集合中的所有元素

System.out.println(a1.subList(1, 3));//获取集合中某一部分的元素,包含头不包含尾
}

List集合特有的迭代器:ListIterator(是Iterator的子接口)

注意:
在迭代时,是不可以通过集合对象的方法操作集合中的元素
因为会发生ConcurrentModificationException异常(并发异常)
所以,在迭代器时,只能用迭代器的方法造作元素
因为Iterator方法是有限的所以只能对元素进行判断,取出,删除的操作
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator
该接口只能通过List集合的listIterator方法获取

复制代码 代码如下:

public class ListIteratorDemo {
     public static void main(String[] args) {
         ArrayList a1 = new ArrayList();
         a1.add("java01");
         a1.add("java02");
         a1.add("java03");
         a1.add("java04");

System.out.println("原集合是:"+a1);

/*在迭代过程中准备添加或者删除元素
      Iterator it = al.iterator();
      while (it.hasNext()){
        Object obj = it.next();

  if (obj.equals("java02"))
        //al.add("java008");//会出现并发异常,因为迭代器正在操作集合,不能再用集合的方法操作集合了
        it.remove();//将java02的引用从集合中删除了
        System.out.println("obj:"+obj);
        }
        */

//只有List的listIterator有增,删,改,查这些功能,因为只有List有索引
       ListIterator li = a1.listIterator();
          while (li.hasNext()){
          if(li.next().equals("java02"))
          //li.add("java009");
          li.set("java006");
        }  
    }
}

Vector:枚举就是Vector特有的取出方式,跟迭代器很像(其实枚举和迭代是一样的) 已经被迭代器取代

复制代码 代码如下:

public class VectorDemo {
     public static void main(String[] args) {
         Vector v = new Vector();
         v.add("java01");
         v.add("java02");
         v.add("java03");
         v.add("java04");

for(Enumeration en = v.elements();en.hasMoreElements();){
            System.out.println(en.nextElement());
        }
    }

}

LinkedList:

特有方法:  

addFirst();在头部添加元素      addLast();在尾部添加元素

getFirst(); getLast(); 获取元素但不删除元素。如果集合中没有元素,会出现NoSuchElementException

removeFirst();   removeLast(); 获取元素但是删除元素。如果集合中没有元素,会出现NoSuchElementException

在JDK1.6出现了替代方法

offerFirst(); offerLast();

peekFirst(); peekLast(); 获取元素,但是元素不被删除。如果集合中没有元素,会返回null

pollFirst(); pollLast(); 获取元素,但是元素被删除。如果集合中没有元素,会返回null

复制代码 代码如下:

public class LinkedListDemo {
     public static void main(String[] args) {
         LinkedList link = new LinkedList();
         link.add("java01");
         link.add("java02");
         link.add("java03");
         link.add("java04");

while(!link.isEmpty()){
            System.out.println((link.removeLast()));
        }
    }

}

时间: 2014-01-11

JavaWeb实现文件上传下载功能实例解析

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

java中File类的使用方法

构造函数 复制代码 代码如下: public class FileDemo {     public static void main(String[] args){         //构造函数File(String pathname)         File f1 =new File("c:\\abc\\1.txt");         //File(String parent,String child)         File f2 =new File("c:\\a

Java 正则表达式详解

如果你不熟悉这个术语,那么"正则表达式"(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式. 正则表达式30分钟入门教程 常用正则表达式 许多语言,包括Perl.PHP.Python.JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级"搜索-替换"功能.那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理的Java规范需求(Specification R

JAVA 十六进制与字符串的转换

toHexString public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式. 如果参数为负,那么无符号整数值为参数加上 232:否则等于该参数.将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串.如果无符号数的大小值为零,则用一个零字符 '0' ('\u0030') 表示它:否则,无符号数大小的表示形式中的第一个字符将不是零字符.用以下字符作为十六进制数字: 0123456789abcd

java 中newInstance()方法和new关键字的区别

java 中newInstance()方法和new关键字的区别 * 它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类. * 那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩.可扩展和可重用等软件设计思想. * 我们使用关键字new创建一个类的时候,这个类可以没有被加载.但是使用newInstance()方法的时候, * 就必须保证:1.这个类已经加载:2.这个类已经连接了. * newInstance()实际上是把new这个方式分解为两步,即首先调用Class

JAVA8 十大新特性详解

"Java is still not dead-and people are starting to figure that out." 本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字. 一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: 复制代码 代码如下: interface Formula {    double calculate(int a); default do

Java环境变量的设置方法(图文教程)

安装JDK 向导进行相关参数设置.如图: 正在安装程序的相关功能,如图: 选择安装的路径,可以自定义,也可以默认路径.如图: 成功安装之后,进行测试是否真的成功安装,点击[开始]----[运行]----输入 CMD,在命令提示符里面输入"Java -version"并按回车键,出现下图,即为安装成功.如图: 下面开始配置环境变量,右击[我的电脑]---[属性]-----[高级]---[环境变量],如图: 选择[新建系统变量]--弹出"新建系统变量"对话框,在&quo

java环境变量的配置方法图文详解【win10环境为例】

本文实例讲述了java环境变量的配置方法.分享给大家供大家参考,具体如下: 为什么要配置环境变量: 1. PATH环境变量(Window不区分大小写,Linux系统下必须大写). 作用是指定命令搜索路径 在CMD中执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序.我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac java javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac j

windows下java环境变量的设置方法

windows xp下配置JDK环境变量:1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择安装目录为D:/java/jdk1.5.0_08: 2.安装完成后,右击"我的电脑",点击"属性": 3.选择"高级"选项卡,点击"环境变量": 4.在"系统变量"中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击"编辑",不存在则点击

在Pycharm中项目解释器与环境变量的设置方法

1.官网下载Pycharm community版如pycharm-community-2017.3.1.tar.gz. 2. #解压tar.gz tar xfz pycharm-*.tar.gz cd bin ./Pycharm.sh 然后,一路next安装. 3.出现Pycharm图像界面时,表明安装成功. 4.新建项目 1)File->New project-> 设置项目所在路径: 设置解释器:ubuntu16.04默认安装python2.python3.python2.7.python3

linux系统 java环境变量的配置方法

配置java环境变量 这里是将环境变量配置在etc/profile,即为所有用户配置JDK环境. sudo vi /etc/profile 配置环境变量(注意jdk位置) #set java env export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_171 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOM

多种型号的ADSL路由设置方法图文教程第1/2页

中兴831adsl modem 如何设置831:     先要把831的内置软件刷到2.79版本,可www.zte.com.cn下载(如何刷在说明里面) 831出厂设置的以太网口IP地址是192.168.1.1,为了能用telnet访问到831,我们现在先把一台电脑的地址设置为192.168.1.*, 使用ping 192.168.1.1 看看能不能访问到831,没问题的话继续,在DOS模式下打入telnet 192.168.1.1,如果你刚刷好软件,是有密码的,原厂密码是adsl831接着我们

一键设置java 环境变量 cmd下查看、修改(覆盖与添加)等说明

上来就给点干货吧 安装JDK/安装JRE以及配置java环境变量对于java初学者来说是一件比较头疼的事情,这边分享一个简单的批处理命令,助大家一步完成JDK或者单独安装JRK的需求. 关键步骤: 1.新建一个.txt文档,复制附件一/附件二到文档中: 2.修改文档中的内容: 附件一:start /WAIT jdk-8u141-windows-i586.exe /qn INSTALLDIR=C:\Java\jdk1.8 附件二:start /WAIT jre-8u144-windows-i586

Linux系统设置PATH环境变量(3种方法)

1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变量?简单说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件. 设置变量对于一般人最实用的功能就是: 不用拷贝某些dll文件到系统目录中了,而path 这一系统变量就是系统搜索dll文件的一系列路径 在Linux系统下,如果你下载并安装应用程序,很有可能在键入它的名称的时候出现

Mac Book中Java环境变量设置的方法

Mac 启动加载文件位置(可设置环境变量) -------------------------------------------------------  (1)首先要知道你使用的Mac OS X是什么样的Shell,使用命令 echo $SHELL 如果输出的是:csh或者是tcsh,那么你用的就是C Shell. 如果输出的是:bash,sh,zsh,那么你的用的可能就是Bourne Shell的一个变种. Mac OS X 10.2之前默认的是C Shell. Mac OS X 10.3

win10设置java环境变量的方法

1.首先,win10得找到设置的入口:Control Panel\All Control Panel Items\System 2.找到advanced system settings 以上这篇win10设置java环境变量的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.