List接口与实现类
创始人
2024-02-15 09:05:26
0

目录

一、List接口

1.特点:

2.方法:

二、List接口的使用

三、List实现类

1.ArrayList(重点)

(1)特点

(2)示例

(3)源码分析

2.Vector

(1)特点

(2)示例

3.LinkedList

(1)特点

(2)示例

四、ArrayList和LinkedList的区别

1.ArrayList     数组

2.LinkedList    双向链表


一、List接口

1.特点:

有序、有下标、元素可以重复。

2.方法:

1.在index位置插入对象o

void add(int index,Object o)

2. 将一个集合中的元素添加到此集合中的index位置

boolean addAll(int index,Collection c)

3. 返回集合中指定位置的元素

Object get(int index)

4. 返回fromIndex和toIndex之间的集合元素

List subList(int fromIndex,int toIndex)

二、List接口的使用

详见代码注解:

重点都在注释      重点都在注释      重点都在注释      

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;/*** List子接口使用* 特点:1.有序 有下标* 特点:2.可以重复*/
public class Test03 {public static void main(String[] args) {//1.先创建集合对象List list = new ArrayList<>();//添加元素list.add("苹果");list.add("葡萄");list.add(20);list.add(46);list.add(56);list.add("香蕉");list.add("橘子");list.add(1, "梨子");System.out.println("元素个数:" + list.size());System.out.println(list.toString());System.out.println("----------------");//2.删除元素(字符串)list.remove(1);System.out.println("删除之后的个数:" + list.size());System.out.println(list.toString());System.out.println("----------------");//删除数字// 直接删除角标list.remove(2);System.out.println(list.toString());System.out.println("----------------");//转为Objectlist.remove((Object) 46);System.out.println(list.toString());System.out.println("----------------");//new Integerlist.remove(new Integer(56));System.out.println(list.toString());System.out.println("----------------");//3.遍历//(1)有角标,可以使用for循环遍历for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("----------------");//(2)使用增强forfor (Object objiect : list) {System.out.println(objiect);}System.out.println("----------------");//(3)使用迭代器  只能往后遍历Iterator it = list.iterator();while (it.hasNext()) {System.out.println(it.next());}System.out.println("----------------");//(4)列表迭代器     可以逆向遍历,任意方向,添加、删除、修改元素ListIterator lit = list.listIterator();while (lit.hasNext()) {System.out.println(lit.nextIndex() + ":" + lit.next());  //从前往后遍历}System.out.println("----------------");while (lit.hasPrevious()) {System.out.println(lit.previousIndex() + ":" + lit.previous());  //从后往前遍历}System.out.println("----------------");//4.判断System.out.println(list.contains("苹果"));System.out.println(list.isEmpty());System.out.println("----------------");//5.获取位置System.out.println(list.indexOf("葡萄"));System.out.println("----------------");//6.返回子集合  subListList list1 = list.subList(1,3);   //包含角标1的元素,不包含角标3的元素System.out.println(list1.toString());}
}

三、List实现类

1.ArrayList(重点)

(1)特点

数组结构实现,查询快、增删慢

运行效率快,线程不安全

(2)示例

详见代码注解:

重点都在注释      重点都在注释      重点都在注释      

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 


import com.scaaner.Student;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;/*** ArrayList的使用* 存储结构:数组    查找遍历快   增删慢  比较*/
public class Test01 {public static void main(String[] args) {//创建集合ArrayList arraylist = new ArrayList<>();//1.添加元素Student s1 = new Student("A",20);Student s2 = new Student("B",22);Student s3 = new Student("C",24);Student s4 = new Student("D",27);arraylist.add(new Student("A",20));arraylist.add(s2);arraylist.add(s3);arraylist.add(s4);System.out.println("元素个数:"+arraylist.size());System.out.println(arraylist.toString());System.out.println("------------------------------");//2.删除元素arraylist.remove(s1);System.out.println("删除之后个数:"+arraylist.size());System.out.println(arraylist.toString());System.out.println("------------------------------");//3.遍历元素//(1)迭代器Iterator iterator = arraylist.iterator();while(iterator.hasNext()){Student s = (Student) iterator.next();System.out.println(s.toString());}System.out.println("------------------------------");//(2)列表迭代器ListIterator listIterator = arraylist.listIterator();while(listIterator.hasNext()){Student student = (Student) listIterator.next();System.out.println(student.toString());}System.out.println("------------------------------");while(listIterator.hasPrevious()){Student student1 = (Student) listIterator.previous();System.out.println(student1.toString());}//4.判断System.out.println(arraylist.contains(new Student("A",20)));System.out.println(arraylist.isEmpty());System.out.println("------------------------------");//5.查找System.out.println(arraylist.indexOf(s2));}
}

用equals判断两元素是否相等:↓↓↓

(3)源码分析

向集合添加元素后,默认容量:DEFAULT_CAPACITY = 10;如果没有添加任何元素,容量为0。

每次扩容的大小是原来的1.5倍。

存放元素的数组:elementData

实际元素个数:size

添加元素:add()

2.Vector

(1)特点

数组结构实现,查询快、增删慢

运行效率慢,线程安全

可实现可增长的对象数组

(2)示例

详见代码注解:

重点都在注释      重点都在注释      重点都在注释      

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

import java.util.Enumeration;
import java.util.Vector;/*** Vector集合的使用* 存储结构:数组*/
public class Test02 {public static void main(String[] args) {//创建集合Vector vector = new Vector<>();//1.添加元素vector.add("菠萝");vector.add("橘子");vector.add("糯叽叽");vector.add("芒果");System.out.println(vector.toString());System.out.println("-------------------");//2.删除vector.remove(1);//vector.clear();       //清空System.out.println(vector.toString());System.out.println("-------------------");//3.遍历//可以使用for循环,增强for循环,迭代器//使用枚举器Enumeration elements = vector.elements();while(elements.hasMoreElements()){String s =(String) elements.nextElement();System.out.println(s);}System.out.println("-------------------");//4.判断System.out.println(vector.contains("苹果"));System.out.println(vector.isEmpty());System.out.println("-------------------");//5.其他方法System.out.println(vector.firstElement());   //枚举第一个元素System.out.println(vector.lastElement());   //枚举最后一个元素}
}

3.LinkedList

(1)特点

链表结构实现(双向链表),查询慢、增删快

(2)示例

详见代码注解:

重点都在注释      重点都在注释      重点都在注释      

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 

import com.scaaner.Student;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;/*** LinkedList的使用* 存储结构:双向链表*/
public class Test01 {public static void main(String[] args) {//创建集合LinkedList linkedList = new LinkedList<>();//1.添加元素Student s1 = new Student("A",20);Student s2 = new Student("B",22);Student s3 = new Student("C",24);Student s4 = new Student("D",27);linkedList.add(s1);linkedList.add(s2);linkedList.add(s3);linkedList.add(s4);System.out.println("元素个数:"+linkedList.size());System.out.println(linkedList.toString());System.out.println("-----------------------");//2.删除   remove     清空 clear//3.遍历//(1)forfor (int i = 0; i 

四、ArrayList和LinkedList的区别

1.ArrayList     数组

 必须开辟连续空间,查询快,增删慢。

2.LinkedList    双向链表

无需开辟连续空间,查询慢,增删快。


简单粗暴!

感谢ლ(°◕‵ƹ′◕ლ)!!!

相关内容

热门资讯

重庆市律师行业妇女联合会成立 12月23日,重庆市律师行业妇女联合会成立大会暨第一次妇女代表大会召开。 会议选举产生了市律师行业妇...
央行:建议发挥增量政策和存量政... 观点网讯:12月24日消息,中国人民银行货币政策委员会2025年第四季度(总第111次)例会于12月...
原创 西... 亚太日报 梁栋 据美国当地媒体报道,本月初,美国西雅图一名75岁的老人在街头遭到一名“臭名昭著”的惯...
通宇通讯:发布对外投资管理制度... 通宇通讯公告称,公司发布对外投资管理制度,旨在规范对外投资行为、降低风险、提高收益。制度将对外投资分...
华塑控股:沈云借款纠纷案原告起... 证券之星消息,华塑控股(000509)12月23日在投资者关系平台上答复投资者关心的问题。 投资者提...
央行:建议发挥增量政策和存量政... 钛媒体App 12月24日消息,中国人民银行货币政策委员会2025年第四季度(总第111次)例会于1...
中仑新材:公司已严格遵循法律法... 证券之星消息,中仑新材(301565)12月23日在投资者关系平台上答复投资者关心的问题。 投资者提...
原创 保... 2025年12月24日,保定市人大常委会组织召开市人大制度研究会成立大会暨第一届会员大会第一次会议,...
法援志愿行 (来源:南京晨报) 转自:南京晨报 记者12月23日从司法部获悉,司法部、教育部、共青团中央印发通知...
一审胜诉!ST新亚无需承担大额... 12月24日,ST新亚(002388)发布公告,披露公司及控股子公司、上海分公司涉及的一起大额款项支...