java 集合之实现类ArrayList和LinkedList的方法

List 的方法列表

方法名 功能说明
ArrayList() 构造方法,用于创建一个空的数组列表
add(E e) 将指定的元素添加到此列表的尾部
get(int index) 返回此列表中指定位置上的元素
size() 返回此列表中的元素数
clear() 移除此列表中的所有元素
isEmpty() 如果此列表中没有元素,则返回true
remove(int index) 移除此列表中指定位置上的元素
indextof(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回-1
toArray 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组

下面将用一个简单的例子进行说明:

实现类ArrayList

package yjlblog;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {

 public static void main(String[] args) {
  List list = new ArrayList();//List 是接口,用多态需要指向它的实现类
  list.add("double kill");
  list.add("three kill");
  list.add("four kill");
  list.add("pentakill");
  System.out.println(list); //[double kill, three kill, four kill, pentakill]
        //默认调用的是tostring 方法,但是这个头string方法不是object里面的,可以查帮助文档可知,是继承的collection的一个方法
  System.out.println(list.get(2)); //four kill
  String s = (String)list.get(2);//如果用定义变量的形式来表示的话,需要用到强制类型的转换,因为list。get()方法是object的类里的
  System.out.println(list.isEmpty());
  //false
  //list.clear();
  //System.out.println(list.isEmpty());
  //true
  //System.out.println(list.remove(2));//输出制定索引的 被“删除的元素”
  list.remove(1);//删除索引为“1” 的元素
  System.out.println(list);//[double kill, four kill, pentakill],删除了索引为“1”的元素
  System.out.println(list.indexOf("double kill"));//0 输出所指明字符串的 “索引值”

  System.out.println(list.size());// 3 ,返回数组的长度

  Object[] obj = list.toArray();
  System.out.println(obj.length);
  //数组的遍历 for 循环
  for (int i = 0;i < list.size();i++)
  {
   System.out.print(list.get(i)+" ");

  }
  System.out.println();
  //使用for each 语句
  for (Object x:list)
  {
   System.out.print(x+" ");
  }
  System.out.println();
  //使用迭代器
  //1.先获得list集合的迭代器
  Iterator iterator = list.iterator();
  //2.通过它的hasNest方法,判断是否遍历完成,用循环实现
  while (iterator.hasNext() == true)
  {
  //3.使用next方法,去除它的下一个元素
   System.out.print(iterator.next()+" ");

  }
  System.out.println();

 }

}
//再写上迭代器的说明
//加上arraylist 和 linbkedlist的区别 和代码
//加上后面的几个方法

实现类LinkedList

List 接口的链接列表实现,实现所有可选的列表操作,并且允许所有元素(包括null)。除了实现List接口外,LinkedList类还为在列表的开头及结尾get,remove,insert元素提供了统一的命名方法。这些操作允许将链表列表表应作堆栈、队列、或双端队列。

LinkedList的部分方法

方法名 功能说明
addFirst(E e) 将指定元素插入此列表的开头
addLast(E e) 将指定元素添加到此列表的结尾
removeFirst() 移除并返回此列表的第一个元素
removeLast() 移除并返回此列表的最后一个元素
getFirst() 返回此列表中的第一个元素
getLast() 返回此列表中的最后一个元素
package yjlblog;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {

 public static void main(String[] args) {
  List list = new LinkedList();//List 是接口,用多态需要指向它的实现类
  list.add("double kill");
  list.add("three kill");
  list.add("four kill");
  list.add("pentakill");
  System.out.println(list); //[double kill, three kill, four kill, pentakill]
  //和ArrayList 的其他方法都是一样的,只是加了一些方法

集合的遍历

从上面的例子中也有所提及,下面看代码

使用for 循环

使用for -each 循环

使用Iterator(迭代器)接口

每个集合类都提供了iterator方法以返回一个迭代器,通过这个迭代器,可以完成集合的遍历或删除操作,迭代器的使用步骤如下:

****

1.通过Iterator方法获得集合的迭代器

2.通过调用hasNext 方法判断是否存在下一个元素

3.使用next方法,去除它的下一个元素

//数组的遍历 for 循环
for (int i = 0;i < list.size();i++)
{
 System.out.print(list.get(i)+" ");

}
System.out.println();
//使用for each 语句
for (Object x:list)
{
 System.out.print(x+" ");
}
System.out.println();
//使用迭代器
//1.先获得list集合的迭代器
Iterator iterator = list.iterator();
//2.通过它的hasNest方法,判断是否遍历完成,用循环实现
while (iterator.hasNext() == true)
{
//3.使用next方法,去除它的下一个元素
 System.out.print(iterator.next()+" ");

}
System.out.println();

以上这篇java 集合之实现类ArrayList和LinkedList的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2017-10-17

Java中ArrayList和LinkedList的遍历与性能分析

前言 通过本文你可以了解List的五种遍历方式及各自性能和foreach及Iterator的实现,加深对ArrayList和LinkedList实现的了解.下面来一起看看吧. 一.List的五种遍历方式 1.for each循环 List<Integer> list = new ArrayList<Integer>(); for (Integer j : list) { // use j } 2.显示调用集合迭代器 List<Integer> list = new Ar

JAVA LinkedList和ArrayList的使用及性能分析

第1部分 List概括List的框架图List 是一个接口,它继承于Collection的接口.它代表着有序的队列.AbstractList 是一个抽象类,它继承于AbstractCollection.AbstractList实现List接口中除size().get(int location)之外的函数.AbstractSequentialList 是一个抽象类,它继承于AbstractList.AbstractSequentialList 实现了"链表中,根据index索引值操作链表的全部函数

Java中ArrayList和LinkedList之间的区别_动力节点Java学院整理

一.ArrayList ArrayList是一个可以处理变长数组的类型,这里不局限于"数"组,ArrayList是一个泛型类,可以存放任意类型的对象.顾名思义,ArrayList是一个数组列表,因此其内部是使用一个数组来存放对象的,因为Object是一切类型的父类,因而ArrayList内部是有一个Object类型的数组类存放对象.ArrayList类常用的方法有add().clear().get().indexOf().remove().sort().toArray().toStri

java中ArrayList 、LinkList的区别分析

1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.      2.对于随机访问get和set,ArrayList优于LinkedList,因为ArrayList可以随机定位,而LinkedList要移动指针一步一步的移动到节点处.(参考数组与链表来思考)     3.对于新增和删除操作add和remove,LinedList比较占优势,只需要对指针进行修改即可,而ArrayList要移动数据来填补被删除的对象的空间. ArrayList和LinkedL

Java中ArrayList的removeAll方法详解

本文介绍的是关于Java中ArrayList的removeAll方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 在开发过程中,遇到一个情况,就是从所有骑手Id中过滤没有标签的骑手Id(直接查询没有标签的骑手不容易实现), List<Integer> allRiderIdList = new ArrayList(); // 所有的骑手,大致有23W数据 List<Integer> hasAnyTagRiderId = new ArrayList(); // 有标签

java 中RandomAccess接口源码分析

java 中RandomAccess接口源码分析 RandomAccess是一个接口,位于java.util包中. 这个接口的作用注释写的很清楚了: /** * Marker interface used by <tt>List</tt> implementations to indicate that * they support fast (generally constant time) random access. The primary * purpose of this

详解Java中Thread 和Runnable区别

Thread 和Runnable 关系 Thread类是接口Runnable的一个实现类. public class Thread implements Runnable 源码分析 Thread Threa类运行的时候调用start()方法,源代码如下: 调用start()方法,实际运行的是start0方法,方法声明如下: private native void start0() native表明这个方法是个原生函数,即这个函数是用C/C++实现的,被编译成DLL,由Java调用. native

java 中Buffer源码的分析

java 中Buffer源码的分析 Buffer Buffer的类图如下: 除了Boolean,其他基本数据类型都有对应的Buffer,但是只有ByteBuffer才能和Channel交互.只有ByteBuffer才能产生Direct的buffer,其他数据类型的Buffer只能产生Heap类型的Buffer.ByteBuffer可以产生其他数据类型的视图Buffer,如果ByteBuffer本身是Direct的,则产生的各视图Buffer也是Direct的. Direct和Heap类型Buff

详解Java中“==”与equals()的区别

Java中"=="与equals()的区别 对于关系操作符"==",<Java编程思想>中是这样描述的:"关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系".这里的操作数的"值"值得我们注意.对于8种基本数据类型(boolean,byte,char,short,int,float,double,long),它们的变量直接存储的就是"值".所以,我们用"==&q

Java中ArrayList类的使用方法

Java中ArrayList类的用法 1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 2.如何使用ArrayList 最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i <10;i++ ) //给数组增加10个Int元素 List.Add(i); //..

java arrayList遍历的四种方法及Java中ArrayList类的用法

java arrayList遍历的四种方法及Java中ArrayList类的用法 package com.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayListDemo { public static void main(String args[]){ List<String> list = new ArrayList<String

java 中volatile和lock原理分析

java 中volatile和lock原理分析 volatile和lock是Java中用于线程协同同步的两种机制. Volatile volatile是Java中的一个关键字,它的作用有 保证变量的可见性 防止重排序 保证64位变量(long,double)的原子性读写 volatile在Java语言规范中规定的是 The Java programming language allows threads to access shared variables (§17.1). As a rule,

java 中ArrayList与LinkedList性能比较

java 中ArrayList与LinkedList性能比较 今天看一框架的代码,看到有些 可以使用ArrayList的地方 使用的是 LinkedList,用到的情景是在一个循环里面进行顺序的插入操作. 众所周知java里面List接口有两个实现ArrayList 和 LinkedList,他们的实现原理分别是c语言中介绍的数组和链表. 正如学习数据结构时的认识,对于插入操作,链表的结构更高效,原因是可以通过修改节点的指针 就可以完成插入操作, 而不像数组, 需要把插入位置之后的数组元素依次后