Java集合之List超详细讲解 您所在的位置:网站首页 js中的list添加集合 Java集合之List超详细讲解

Java集合之List超详细讲解

2024-06-04 01:33| 来源: 网络整理| 查看: 265

文章目录 一.List集合1主要方法2.ArrayList集合2.1代码演示 3.ArrayList如何存入自定义的数据?4.LinkedList集合5.ArrayList与LinkedList

一.List集合

List集合为列表类型,以线性方式存储对象。List集合中的元素允许重复,各元素的顺序就是对象插入的顺序。用户可以通过使用索引来访问List集合中的元素。

1主要方法 方法说明void add(int index,Object obj)将obj插入调用列表,插入位置的下标由index传递。任何已存在的,在插入点以及插入点以后的元素将前移,因此没有元素被覆写。Boolean addAll(int index,Collection c)将c中的所有元素插入到调用列表中,插入点的下标由index传递。Object get(int index)返回指定下标的对象Object set(int index,Object obj)对由index指定的位置进行赋值int indexOf(Object obj)返回调用列表obj的第一个实例的下标。如果obj不是列表元素,返回-1.

对于由Collection定义的add()和addAll()方法外,List增加了方法add(int,Object)和addAll(int,Collection),这俩方法可以在指定的下标处插入元素。

List集合的特点就是存取有序,可以存储重复的元素,可以用下标进行元素的操作

2.ArrayList集合

ArrayList支持可随需要而增长的动态数组。在Java数组中,长度是固定的,因此在数组被创建后,不能修改长度,这意味着开发者需要实现知道数组的长度。但在一般情况下,只有在运行时才知道数组长度。为了解决这个问题,ArrayList因此而生。

2.1代码演示 class Test{ public static void main(String[] args) { ArrayList list1 = new ArrayList(); System.out.println("list1初始长度为:"+ list1.size()); list1.add("A"); list1.add("B"); list1.add("C"); list1.add("D"); list1.add("E"); list1.add("F"); //将B2添加在list1的index=1的位置 list1.add(1, "B2"); System.out.println("list1加入元素后的大小:" + list1.size()); System.out.println("list1元素为:"+ list1); list1.remove("A"); list1.remove(2); System.out.println("list1删除元素后的大小:" + list1.size()); System.out.println("list1元素为:" + list1); } }

Output:

list1初始长度为:0 list1加入元素后的大小:7 list1元素为:[A, B2, B, C, D, E, F] list1删除元素后的大小:5 list1元素为:[B2, B, D, E, F] // 需要移动数据,使得B2作为index=0的元素。

注意,list1开始为空,随着元素的加入,大小增加。当每个元素被删除时,大小会每次变小。

底层是使用数组实现,所以查询速度快,增删速度慢

3.ArrayList如何存入自定义的数据? import java.util.ArrayList; import java.util.Iterator; public class Student{ private String name; private int id; public Student(){} public Student(String name, int id) { super(); this.name = name; this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } } class Test{ public static void main(String []args) { ArrayList list1 = new ArrayList(); list1.add(new Student("lili",001)); list1.add(new Student("haha",002)); //匿名对象存入集合 list1.add(new Student("wawa",003)); Iterator it=list1.iterator(); while(it.hasNext()) { Student stu = it.next(); System.out.println(stu.getName()+stu.getId()); } 4.LinkedList集合

除了LinkedList继承的方法以外,它本身还定义了一些有用的方法。 addFirst()可以在列表头增加元素 addLast()可以在列表尾部增加元素 getFirst()可以获取第一个元素 removeFirst()可以删除第一个元素 removeLast()可以删除最后一个元素 getFirst() 返回此列表的第一个元素 getLast() 返回此列表的最后一个元素

LinkedList:是基于链表结构实现的,所以查询速度慢,增删速度快,提供了特殊的方法,对头尾的元素操作(进行增删查)

使用LinkedList实现栈

import java.util.LinkedList; public class MyStack { private LinkedList linkList = new LinkedList(); // 压栈 public void push(String str){ linkList.addFirst(str); } // 出栈 public String pop(){ return linkList.removeFirst(); } // 查看 public String peek(){ return linkList.peek(); } // 判断是否为空 public boolean isEmpty(){ return linkList.isEmpty(); } } public class Test { public static void main(String[] args) { StackTest stack = new StackTest(); stack.push("first"); stack.push("second"); stack.push("third"); stack.push("forth"); stack.push("fifth"); // 取出 while (!stack.isEmpty()){ String pop = stack.pop(); System.out.println(pop); } } }

Output

fifth fourth third second first

也可实现队列。

5.ArrayList与LinkedList ArrayList和LinkedList顾名思义,ArrayList是Array(动态数组)的数据结构,相当于动态数组;LinkedList是Link(链表)的双向数据结构,也可当作堆栈、队列、双端队列。对于随机访问List时(get和set操作),ArrayList比LinkedList的效率更高,因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据(可以在上述ArrayList代码中体现)。两者缺点都为线性不安全

ArrayList和LinkedList线程不安全,在多线程中不建议使用。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有