java list用法示例详解_java

来源:脚本之家  责任编辑:小易  

List本身是一个接口,所以,想要实例化一个List需要继承了List的类,比如ArrayList等。所以可以这样做:List<...>myList=new ArrayList();www.zgxue.com防采集请勿采集本网。

|--List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引,

实例化:List[<数据类型>]list=new ArrayList[<数据类型>]();获得集合内元素个数:list.size();添加元素: 默认添加:list.add(e);指定下标添加(添加后下标后的元素向后挪一位):list.add

  |-- ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步

User user=userList.get(i)

  |-- LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)

我觉得只是为了 加一层约束 比如一个person类,里面有属性age. 可以这么写 public class person{ public int age;} 这时谁都可以跑来修改他,甚至出现不可控的值,比如age 给他 赋值0,甚至负数,甚至

  |-- Vector:底层是数组数据结构 线程同步(数组长度是可变的百分之百延长)(无论查询还是增删都很慢,被ArrayList替代了)

List是一个接口,所以不能用于实例化,你后面指定具体的实现类即可,例如: List<String>list=new ArrayList();List<String>list=new LinkedList();

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

java创建一个list集合,List是不能直接实例化的,所以要用其他的,如ArrayList。1、List temp=new ArrayList();2、temp.add(xxx)。其他解决方法: 1、List<String>list=new ArrayList();创建集合

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())); } }}

下面是补充

List的用法

List包括List接口以及List接口的所有实现类。因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以List接口还提供了一些适合于自身的常用方法,如表1所示。

表1 List接口定义的常用方法及功能

从表1可以看出,List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过对象的索引操作对象。

List接口的常用实现类有ArrayList和LinkedList,在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化为ArrayList或LinkedList,例如:

List<String> l = new ArrayList<String>();// 利用ArrayList类实例化List集合

List<String> l2 = new LinkedList<String>();// 利用LinkedList类实例化List集合

1.add(int index, Object obj)方法和set(int index, Object obj)方法的区别

在使用List集合时需要注意区分add(int index, Object obj)方法和set(int index, Object obj)方法,前者是向指定索引位置添加对象,而后者是修改指定索引位置的对象,例如执行下面的代码:

src/com/mwq/TestCollection.java关键代码:

public static void main(String[] args) {String a = "A", b = "B", c = "C", d = "D", e = "E";List<String> list = new LinkedList<String>();list.add(a);list.add(e);list.add(d);list.set(1, b);// 将索引位置为1的对象e修改为对象blist.add(2, c);// 将对象c添加到索引位置为2的位置Iterator<String> it = list.iterator();while (it.hasNext()) {System.out.println(it.next());}}

在控制台将输出如下信息:

A

B

C

D

因为List集合可以通过索引位置访问对象,所以还可以通过for循环遍历List集合,例如遍历上面代码中的List集合的代码如下:

src/com/mwq/TestCollection.java关键代码:

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));// 利用get(int index)方法获得指定索引位置的对象

}

src/com/mwq/TestCollection.java完整代码如下:

package com.mwq;import java.util.ArrayList;import java.util.LinkedList;import java.util.Iterator;import java.util.List;public class TestCollection {public static void main(String[] args) {System.out.println("开始:");String a = "A", b = "B", c = "C", d = "D", e = "E";List<String> list = new LinkedList<String>();list.add(a);list.add(e);list.add(d);list.set(1, b);// 将索引位置为1的对象e修改为对象blist.add(2, c);// 将对象c添加到索引位置为2的位置Iterator<String> it = list.iterator();while (it.hasNext()) {System.out.println(it.next());}// for (int i = 0; i < list.size(); i++) {// System.out.println(list.get(i));// 利用get(int index)方法获得指定索引位置的对象// }System.out.println("结束!");}}

2.indexOf(Object obj)方法和lastIndexOf(Object obj)方法的区别

在使用List集合时需要注意区分indexOf(Object obj)方法和lastIndexOf(Object obj)方法,前者是获得指定对象的最小的索引位置,而后者是获得指定对象的最大的索引位置,前提条件是指定的对象在List集合中具有重复的对象,否则如果在List集合中有且仅有一个指定的对象,则通过这两个方法获得的索引位置是相同的,例如执行下面的代码:

src/com/mwq/TestCollection.java关键代码:

public static void main(String[] args) {String a = "A", b = "B", c = "C", d = "D", repeat = "Repeat";List<String> list = new ArrayList<String>();list.add(a); // 索引位置为 0list.add(repeat); // 索引位置为 1list.add(b); // 索引位置为 2list.add(repeat); // 索引位置为 3list.add(c); // 索引位置为 4list.add(repeat); // 索引位置为 5list.add(d); // 索引位置为 6System.out.println(list.indexOf(repeat));System.out.println(list.lastIndexOf(repeat));System.out.println(list.indexOf(b));System.out.println(list.lastIndexOf(b));}src/com/mwq/TestCollection.java完整代码如下:package com.mwq;import java.util.ArrayList;import java.util.List;public class TestCollection {public static void main(String[] args) {System.out.println("开始:");String a = "A", b = "B", c = "C", d = "D", repeat = "Repeat";List<String> list = new ArrayList<String>();list.add(a); // 索引位置为 0list.add(repeat); // 索引位置为 1list.add(b); // 索引位置为 2list.add(repeat); // 索引位置为 3list.add(c); // 索引位置为 4list.add(repeat); // 索引位置为 5list.add(d); // 索引位置为 6System.out.println(list.indexOf(repeat));System.out.println(list.lastIndexOf(repeat));System.out.println(list.indexOf(b));System.out.println(list.lastIndexOf(b));System.out.println("结束!");}}

在控制台将输出如下信息:

1

5

2

2

3.subList(int fromIndex, int toIndex)方法

在使用subList(int fromIndex, int toIndex)方法截取现有List集合中的部分对象生成新的List集合时,需要注意的是,新生成的集合中包含起始索引位置代表的对象,但是不包含终止索引位置代表的对象,例如执行下面的代码:

src/com/mwq/TestCollection.java关键代码:

public static void main(String[] args) {String a = "A", b = "B", c = "C", d = "D", e = "E";List<String> list = new ArrayList<String>();list.add(a); // 索引位置为 0list.add(b); // 索引位置为 1list.add(c); // 索引位置为 2list.add(d); // 索引位置为 3list.add(e); // 索引位置为 4list = list.subList(1, 3);// 利用从索引位置 1 到 3 的对象重新生成一个List集合for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}src/com/mwq/TestCollection.java完整代码:package com.mwq;import java.util.ArrayList;import java.util.List;public class TestCollection {public static void main(String[] args) {System.out.println("开始:");String a = "A", b = "B", c = "C", d = "D", e = "E";List<String> list = new ArrayList<String>();list.add(a); // 索引位置为 0list.add(b); // 索引位置为 1list.add(c); // 索引位置为 2list.add(d); // 索引位置为 3list.add(e); // 索引位置为 4list = list.subList(1, 3);// 利用从索引位置 1 到 3 的对象重新生成一个List集合for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("结束!");}}

在控制台将输出如下信息:

B

C

到此这篇关于java list用法示例详解的文章就介绍到这了,更多相关java list用法内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

public static void main(String[]args){ArrayList list=new ArrayList();list.add("test1");增list.remove(0);删list.set(0,"test2");改list.get(0);查}内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • java中list与map初始化的一些写法分享
  • java中list,set,数组之间的转换详解
  • java从list中取出对象并获得其属性值的方法
  • java集合set、list、map的遍历方法
  • java中对list元素进行排序的方法详解
  • java比较两个list的值是否相等的方法
  • java中初始化list的5种方法示例
  • 深入理解spring中的lookup(方法注入)
  • 详解spring极速集成注解redis实录
  • javaee中用response向客户端输出中文数据乱码问题分析
  • ssm框架下web项目,web.xml配置文件的作用(详解)
  • 举例讲解java的jackson库中objectmapper类的使用
  • java中url传中文时乱码的解决方法
  • simple json开发指南
  • python实现filter函数实现字符串切分
  • javascript实现鼠标移动粒子跟随效果
  • java实现屏幕共享功能实例分析
  • java list 用法,增删改查最好有实例!!
  • 在java中怎么实例化一个List
  • JAVA中list接口所有方法的写法,用实例,在线等!谢谢!本人是初学JAVA,见笑了!
  • java把一个list中的内容添加到另一个list中
  • 谁能说明一下java里list这个类怎么用,要详细
  • java中的List下标可以实例一个对象吗.
  • java 谁能给我个详尽实例说明getter /setter的具体用法和使用范围
  • 在java中怎么实例化一个List
  • java 怎么创建一个list集合
  • java的list类实例化对象的问题?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全c#教程vbvb.netc 语言java编程delphijavaandroidiosswiftscala易语言汇编语言其它相关首页javajava中list与map初始化的一些写法分享java中list,set,数组之间的转换详解java从list中取出对象并获得其属性值的方法java集合set、list、map的遍历方法java中对list元素进行排序的方法详解java比较两个list的值是否相等的方法java中初始化list的5种方法示例深入理解spring中的lookup(方法注入)详解spring极速集成注解redis实录javaee中用response向客户端输出中文数据乱码问题分析ssm框架下web项目,web.xml配置文件的作用(详解)举例讲解java的jackson库中objectmapper类的使用java中url传中文时乱码的解决方法simple json开发指南python实现filter函数实现字符串切分javascript实现鼠标移动粒子跟随效果java实现屏幕共享功能实例分析java使double保留两位小数的多方java8 十大新特性详解java.net.socketexception: connjava写入文件的几种方法分享java环境变量的设置方法(图文教程java 十六进制与字符串的转换java list用法示例详解java中file类的使用方法javaweb实现文件上传下载功能实例java 字符串截取的三种方法(推荐详解租约机制以及在hbase中的应用spring boot aop 记录方法执行时间代码示java使用正则表达式验证用户名和密码的方java计算文本md5加密值的方法示例简单了解spring framework5.0新特性java实现八个常用的排序算法:插入排序、javaweb项目中springmvc和tomcat对静态文全面了解java中对于异常的捕捉方法详解springboot和mybatis配置多数据源java导出excel表格的实例教学
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved