当前位置:首页 > 编程教程 > java技术文章 > Java List 用法实例详解

Java中List用法及实例详解

  • 发布时间:
  • 作者:码农之家
  • 点击:95

这篇文章主要知识点是关于Java、List、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Java Web应用详解
Java Web应用详解原书扫描版
  • 类型:Java大小:74.2 MB格式:PDF作者:张丽
立即下载

Tags:Java list 

Java List 用法实例详解

Java List 用法实例详解

Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对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()));
    }
  }
}

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Java 相关电子书
学习笔记
网友NO.443711

Java LinkedList的实现原理图文详解

一、概述 先来看看源码中的这一段注释,我们先尝试从中提取一些信息: Doubly-linked list implementation of the List and Deque interfaces. Implements all optional list operations, and permits all elements (including null).All of the operations perform as could be expected for a doubly-linked list. Operations that index into the list will traverse the list from the beginning or the end, whichever is closer to the specified index.Note that this implementation is not synchronized. If multiple threads access a linked list concurrently, and at least one of the threads modifies the list structurally, it must be synchronized externally. (A structural modification is any operation that adds or deletes one or more elements; merely setting the value of an element is not a structural modification.) This is typically accomplished by synchronizing on some object that naturally encapsulates the list. 从这段注释中,我们可以得知 LinkedList 是通过一个双向链……

网友NO.685107

Java集合定义与用法实例总结【Set、List与Map】

本文实例讲述了Java集合定义与用法。分享给大家供大家参考,具体如下: java集合大体可分为三类,分别是Set、List和Map,它们都继承了基类接口Collection,Collection接口定义了众多操作集合的基本方法,如下: 为了访问Collection集合,不得不去了解Iterator接口。该接口很简单,主要用于定义访问集合的方法,如下: 所以上述的三大类子集合必定都继承了上面2个接口。其中Set集合要求元素不重复,且内部无序,所以访问时只能根据元素值来访问;List内部为动态数组,支持有序,元素也可重复,所以往往有index;Map所代表的集合是具有Key-Value的映射关系的集合,如哈希表。 1. Set 1.1 Set不可添加相同元素 import java.util.Collection;import java.util.HashSet;public class TestSet { @SuppressWarnings({ "rawtypes", "unchecked" }) public static void main(String[] args) { Collection c1 = new HashSet(); Person p = ……

网友NO.238032

java实现ArrayList根据存储对象排序功能示例

本文实例讲述了java实现ArrayList根据存储对象排序功能。分享给大家供大家参考,具体如下: 与c++中的qsort的实现极为相似,构建新的比较对象Comparator即可 package demo;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;class Stu{ public int age; private String name; public Stu(String name,int age){ this.age=age; this.name=name; } public String toString(){ String str=name+"is "+age; return str; }}public class Sort{ @SuppressWarnings({ "unchecked", "rawtypes" }) public static void main(String[] args){ ArrayListStu s=new ArrayListStu(); s.add(new Stu("cjc",25)); s.add(new Stu("jake",17)); s.add(new Stu("john",30)); s.add(new Stu("Alice",23)); System.out.println("码农之家测试结果:"); System.out.println("The order before sorting!"); System.out.println(s); //对集合中的元素更具年龄进行排序 Collections.sort(s,new Comparator(){ @Override public int compare(Object o1, Object o2) { // TODO A……

<
1
>

电子书 编程教程 PC软件下载 安卓软件下载

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757