Java List接口的集合使用详解

目录
  • ArrayList集合
  • LinkedList类
  • LinkedList与ArrayList的区别:
  • 总结

List接口继承collection接口,此接口可以对列表中的每个元素精确的控制,可以根据元素的索引来获取列表中的值,下面介绍常用的几种,ArrayList,LinkedList。

ArrayList集合

ArrayList是一个动态修改的数组,它没有固定的大小,不需要自己分配空间,java本身已经初始化容量为10的大小,可以直接添加删除等一系列操作。

ArrayList构造方法:

  • ArrayList() ;构造一个初始化容量为10的空列表。
  • ArrayList(Collection c) ; 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
  • ArrayList(int initialCapacity) ;构造一个指定初始容量的空列表。

常用方法:

方法名 说明
boolean add(E e) 将指定元素添加到列表尾部
void add(int index, E element) 将指定元素添加到列表中指定位置
void clear() 删除此列表中的所有元素
Object clone() 返回ArrayList副本
boolean contains(Object o) 如果列表中包含指定元素则返回true,否则false
E get(int index) 返回列表中指定索引位置上的元素
int indexOf(Object o) 返回列表中首次出现的指定元素的索引,如果没有则返回-1
int lastIndexOf(Object o) 返回此列表中最后一次出现的指定元素的索引,没有则返回-1
E remove(int index) 删除指定索引上的元素,并返回删除值
boolean remove(Object o) 移除列表中首次出现的元素
E set(int index, E element) 将此列表中的索引位置的元素换成指定的元素
int size() 返回此列表中的元素个数
Object[] toArray() 将此列表所有元素换成数组
boolean isEmpty() 如果此列表为空则返回true
List subList(int fromlndex, int tolndex) 将此列表中从fromindex到toindex的元素组成新的集合返回

示例

import java.util.ArrayList;

public class dome2{
	public static void main(String[] args){
          ArrayList list=new ArrayList();
          list.add("nihoa"); //添加字符串
          list.add(12);   //添加数字
          list.add('a');   //添加字符
          list.add("hello");
          list.set(1,"java"); //将索引为1的换成字符串
          System.out.println("索引为2的值是:"+list.get(2));
          System.out.println("删除索引为0的值是:"+list.remove(0));
          System.out.println("列表中还有"+list.size()+"个元素");
          System.out.println("判断列表是不是为空: "+list.isEmpty());
          for (Object object : list) {   //循序打印
			System.out.print(object+" ");
		}

   }
}

结果
索引为2的值是:a
删除索引为0的值是:nihoa
列表中还有3个元素
判断列表是不是为空: false
java a hello

例1:

创建一个商品类,指定商品的编号,名称,价格,封装它们。

class Goods{
	private int id;    //编号
	private String name;   //名称
	private float price;   //价格
	public Goods() {

	}
	public Goods(int id, String name, float price) {
		super();
		this.id = id;
		this.name = name;
		this.price = price;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public float getPrice() {
		return price;
	}
	public void setPrice(float price) {
		this.price = price;
	}
	@Override
	public String toString() {    //格式输出
		return "商品编号: "+id+", 名称: "+", 价格: "+",";
	}

}

创建一个测试类,填写商品的价格,编号,名称并保存到列表中,通过ArrayList类的方法修改和获取值。

import java.util.ArrayList;

public class dome2{
	public static void main(String[] args){
          ArrayList<Goods> list=new ArrayList<Goods>();
          list.add(new Goods(1,"保温杯",22.0f));
          list.add(new Goods(2,"洗发水",21.3f));
          list.add(new Goods(3,"笔记本",5.0f));
          Goods g=new Goods(5,"热水壶",59.0f);
          list.add(g);
          list.add(new Goods(4,"菜刀",31.4f));

          //1.遍历所有商品
          for(int i=0;i<list.size();i++) {
        	  System.out.println(list.get(i).toString());
          }
          //2.获取指定商品的信息
          System.out.println("查找编号为3,名称为热水壶,价格为59元的元素索引"+list.indexOf(g));
          System.out.println("热水壶的价格是 "+list.get(3).getPrice()+" 元");

          System.out.println("洗发水的编号是 "+list.get(1).getId());

          System.out.println("将菜刀的价格设为120元 ");
          list.get(list.size()-1).setPrice(120.0f);

        //3.遍历所有商品
          for(int i=0;i<list.size();i++) {
        	  System.out.println(list.get(i).toString());
          }

   }
}

结果
商品编号: 1 名称: 保温杯 价格: 22.0
商品编号: 2 名称: 洗发水 价格: 21.3
商品编号: 3 名称: 笔记本 价格: 5.0
商品编号: 5 名称: 热水壶 价格: 59.0
商品编号: 4 名称: 菜刀 价格: 31.4
查找编号为3,名称为热水壶,价格为59元的元素索引3
热水壶的价格是 59.0 元
洗发水的编号是 2
将菜刀的价格设为120元
商品编号: 1 名称: 保温杯 价格: 22.0
商品编号: 2 名称: 洗发水 价格: 21.3
商品编号: 3 名称: 笔记本 价格: 5.0
商品编号: 5 名称: 热水壶 价格: 59.0
商品编号: 4 名称: 菜刀 价格: 120.0

Iterator迭代器遍历:

Iterator接口是Collection接口的超级接口,通过Collection接口下的iterator方法返回iterator。

Iterator方法:

方法名 说明
boolean hasNext() 如果有元素仍可以迭代,就返回true
E next() 返回迭代的下一个元素
void remove() 移除迭代器返回的最后一个元素
public class dome2{
	public static void main(String[] args){
          ArrayList list=new ArrayList();
         list.add("hello ");
         list.add("world!,");
         list.add("hello ");
         list.add("java!");

         Iterator it=list.iterator();
         while(it.hasNext()) {  //判断是否还有下一个元素
        	 System.out.print(it.next());  //输出下一个元素
         }

   }
}

LinkedList类

LinkedList类采用链表结构保存对象,链表采用节点之间的指向,上一个节点指向下一个节点,并且可以在中间插入,不需要数组还需要重新排列,所以在频繁的插入元素和删除元素这方面,LinkedList类要比ArrayList类要快,效率更高。但在访问元素速度方面却相对落后。

构造方法

  • LinkedList() ;构造一个空列表
  • LinkedList(Collection c) ;构造一个包含指定 collection 中的元素的列表

常用方法:

方法名 说明
boolean add(E e) 将指定元素添加到元素列表的结尾
void add(int index, E element) 在列表中指定的位置插入指定的元素
void addFirst(E e) 将指定元素插入到此列表的开头
void addLast(E e) 将指定的元素添加到此列表的结尾
boolean contains(Object o) 如果列表中有指定元素返回true,否则false
E element() 获取但不移除此列表的第一个元素
E get(int index) 返回此列表中指定的元素
E getFirst() 返回此列表的第一个元素
E getLast() 返回此列表的最后一个元素
int indexOf(Object o) 返回此列表首次出现的指定元素的索引,没有返回-1
int lastIndexOf(Object o) 返回此列表最后出现的指定元素的索引,没有返回-1
E set(int index, E element) 将列表中指定位置的元素替换
E removeFirst() 移除并返回此列表中的第一个元素
E removeLast() 移除并返回此列表的最后一个元素

示例:

public class dome2{
	public static void main(String[] args){
         LinkedList list=new LinkedList();
         list.add("电风扇");
         list.add("吹风机");
         list.add("香皂");
         list.add("肥皂");
         list.add("洗发水");

         System.out.println("获取的第一个商品是: "+list.getFirst());
         System.out.println("获取的最后一个商品是: "+list.getLast());
         System.out.println("删除的第一个元素是: "+list.removeFirst());
         System.out.println("将索引为3的元素修改成: "+list.set(3,"牛角梳"));

         for(int i=0;i<list.size();i++) {
        	 System.out.print(list.get(i)+"\t");
         }
   }
}

LinkedList与ArrayList的区别:

1.ArrayList类是基于数组结构实现的,访问速度优先于LinkedList类。

2.LinkedList类占用的内存空间比较大,但在批量插入,删除,修改等时优先于ArrayList类。

总结

本片文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java Web监听器Listener接口原理及用法实例

    监听器主要针对三个对象 ServletContext HttpSession ServletRequest 使用方式 创建*Listener接口的实现类 在web.xml中注册该类 在同时注册多个同接口的监听器时,执行顺序参照web.xml中的注册顺序 监听器监听类型 对象的创建和销毁 对象属性的添加.替换.移除 创建实现类 // 用于监听session创建和销毁的监听器 package listener; import javax.servlet.http.HttpSessionEvent;

  • 浅析Java集合及LIst接口

    一.集合的概念 1.概述: 在学习集合前,先回忆一下数组的一个特征---数组有固定的长度,定义一个数组:int[] array = new int[];而针对数据长度可变的情况,产生了集合,java集合就是为了应对动态增长数据,在编译时无法知道具体的数据量而产生的. 集合类又叫容器类. 2.集合和数组的区别 都是容器,数组时固定的长度,集合时可变的: 数组存放的数据都是基本数据类型(四类八种)集合存放的数据都是引用数据类型(String.Integer.自定义数据类型) 集合中对于基本数据类型会

  • 新手初学Java List 接口

    目录 源码展示 总结 源码展示 package java.util; import java.util.function.UnaryOperator; public interface List<E> extends Collection<E> { /** * 返回 list 中元素的个数. */ int size(); /** * list 是否为空. */ boolean isEmpty(); /** * list 是否包含某个对象. */ boolean contains(O

  • JAVA的LIST接口的REMOVE重载方法调用原理解析

    前言 说真的,平常看源码都是自己看完自己懂,很少有写出来的冲动. 但是在写算法的时候,经常用到java中各种集合,其中也比较常用到remove方法. remove有重载函数,分别传入参数是索引index或者数据Object(指定泛型后自动转换),如果指定泛型是其他数据类型还好,但是指定的是Integer或者是int的话,或者就有点懵了. 这曾经也困惑过我,所以我就唯有用实践解惑了. 测试类设计 测试类一 public class Text { public void remove(int ind

  • Java源码解析之接口List

    前言 List接口是Collection接口的三大接口之一,其中的数据可以通过位置检索,用户可以在指定位置插入数据.List的数据可以为空,可以重复.我们来看看api文档是怎么说的: 一.List特有的方法 我们这里就只关注和Collection不同的方法,主要有以下这些: //在指定位置,将指定的集合插入到当前的集合中 boolean addAll(int index, Collection<? extends E> c); //这是一个默认实现的方法,会通过Iterator的方式对每个元素

  • Java List接口的集合使用详解

    目录 ArrayList集合 LinkedList类 LinkedList与ArrayList的区别: 总结 List接口继承collection接口,此接口可以对列表中的每个元素精确的控制,可以根据元素的索引来获取列表中的值,下面介绍常用的几种,ArrayList,LinkedList. ArrayList集合 ArrayList是一个动态修改的数组,它没有固定的大小,不需要自己分配空间,java本身已经初始化容量为10的大小,可以直接添加删除等一系列操作. ArrayList构造方法: Ar

  • Java Collection 接口和常用方法综合详解

    目录 1. Collection 接口实现类的特点 2. Collection 接口常用方法 3. Collection接口遍历元素方式1- 使用Iterator(迭代器) 4. Collection 接口遍历对象方式2- for 循环增强 5. 练习 1. Collection 接口实现类的特点 public interface Collection<E> extends Iterable<E> 1)Collection实现子类可以存放多个元素,每个元素可以是Object 2)有

  • Java Map接口概述和常用方法详解

    目录 概述 Map常用子类 Map接口中的常用方法 Map集合遍历键找值方式 Entry键值对对象 Map集合遍历键值对方式 概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口. 我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的

  • Java集合之Map接口与实现类详解

    目录 初识Map Map中常用方法 HashMap LinkedHashMap TreeMap HashMap和TreeMap的比较 Hashtable 集合中元素的遍历 iterator接口中的方法 Enumeration接口中的方法 初识Map Map接口没有从Collection接口继承,Map接口用于维护“键-值”对数据,这个“键-值”对就是Map中的元素,Map提供“键(Key)”到“值(value)”的映射,一个Map中键值必须是唯一的,不能有重复的键,因为Map中的“键-值”对元素

  • Java Collection集合用法详解

    目录 1.集合的主要体系及分支 1.1Collection集合及实现类 2.List集合(List是带有索引的,所以多注意索引越界等问题) 2.1 List的实现类 3.Set集合 3.1HashSet(Set的实现类) 3.2TreeSet集合(Set的实现类) 4.集合的高频面试题 4.1Arraylist 与 LinkedList 异同 4.2ArrayList 与 Vector 区别 集合框架底层数据结构总结 1.Collection 1.集合的主要体系及分支 1.1Collection

  • Java Map集合用法详解

    目录 Map集合的概述 常用方法: 遍历方式: Map的实现类: HashMap TreeMap 集合嵌套(补充知识): 高频面试题 1.Map 2.HashMap的底层实现 Map集合的概述 概述:interface Map<K,V> 其中K是键的类型,键是唯一的,不重复.V是值的类型,是可以重复.且每个键可以映射最多一个值.注意的是如果存在两个相同的键时,则会将现在的值替换之前的值. 创建方式:以多态的形式创建对象. 特点: 键值对映射关系 一个键对应一个值 键不能重复,值可以重复 元素存

  • java集合 collection-list-LinkedList详解

    如下所示: import java.util.*; /* LinkedList:特有方法: addFirst(); addLast(); getFirst(); getLast(); 获取元素,但不删除元素.如果集合中没有元素,会出现NoSuchElementException removeFirst(); removeLast(); 获取元素,但是元素被删除.如果集合中没有元素,会出现NoSuchElementException 在JDK1.6出现了替代方法. offerFirst(); of

  • Java接口和抽象类原理详解

    这篇文章主要介绍了Java接口和抽象类原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一

  • Java基础之集合框架详解

    一.前言 本节学习到的内容有以下5类,不分先后顺序: 集合Collection体系结构 List子类 与集合结合使用的迭代器对象 集合与数组的区别? 常见的一般数据结构整理 二.集合的由来? Collection List ArrayList Vector LinkedList Set hashSet treeSet 在集合没有出现之前,使用对象数组来存储对象,但是,对象数组的长度一旦确定,则不可以发生变化,所以我们希望存在一个容器就像StringBuffer一样存储字符串,同时依据传入的值的个

  • Java基础之集合Set详解

    一.概述 Set是Java中的集合类,提供了一种无顺序,不重复的集合.常用的子类包括HashSet, TreeSet等. HashSet底层使用HashMap实现,根据元素的hashCode和equals来判断是否为重复元素.当元素的hashCode相同且equals返回true时则认为是重复元素.因为使用了hash算法所以HashSet有很好的添加和访问性能.可以放入null但只能放一个null TreeSet底层使用红黑树实现,Set上的元素被放在一个自动排序的红黑树中.不能放入null 二

随机推荐