首页 > 其他分享 >ArrayList和LinkedList的区别

ArrayList和LinkedList的区别

时间:2024-09-06 11:52:09浏览次数:7  
标签:index LinkedList 区别 int ArrayList 元素 list System println

> List子体系特点:
A:有序的(存储和读取的顺序是一致的)
B:有整数索引
C:允许重复的

 

<!-- more -->
**List的特有功能**
````
void add(int index, E element) :将元素添加到index索引位置上
E get(int index) :根据index索引获取元素
E remove(int index) :根据index索引删除元素
E set(int index, E element):将index索引位置的的元素设置为element````
**List代码案例**
````
/*
 * List:
 * 		有序的(存储和读取的顺序是一致的)
 * 		有整数索引
 * 		允许重复的
 * 
 * List的特有功能:
 * 			void add(int index, E element)  
 * 			E get(int index)  
 * 			E remove(int index)  
 *  		E set(int index, E element)
 *  
 * 增删改查
 */
public class ListDemo {
	public static void main(String[] args) {
		//创建的列表对象
		List list = new ArrayList();

		//void add(int index, E element)  : 在指定索引位置添加指定元素
		list.add(0, "hello");
		list.add(0, "world");
		list.add(1, "java");

		//E get(int index)  :根据索引返回元素
		/*System.out.println(list.get(0));
		System.out.println(list.get(1));
		System.out.println(list.get(2));*/
		//System.out.println(list.get(3));

		/*for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}*/

		//E remove(int index)  : 删除指定元素并返回

		//System.out.println(list.remove(5));

		//E set(int index, E element) : 将指定索引位置的元素替换为指定元素,并将原先的元素返回
		System.out.println(list.set(0, "android"));

		System.out.println(list);
	}
}````
**LinkedList特有功能**
````
LinkedList底层使用的是链表结构,因此增删快,查询相对ArrayList较慢
void addFirst(E e) :向链表的头部添加元素
 void addLast(E e):向链表的尾部添加元素
 E getFirst():获取链头的元素,不删除元素
 E getLast():获取链尾的元素,不删除元素
 E removeFirst():返回链头的元素并删除链头的元素
 E removeLast():返回链尾的元素并删除链尾的元素````
**LinkedList代码案例**
````
/*
 * List的常用子类:
 * 		ArrayList
 * 			底层是数组结构,查询快,增删慢
 * 		LinkedList
 * 			底层结构是链表,查询慢,增删快
 * 
 * 如何选择使用不同的集合?
 * 		如果查询多,增删少,则使用ArrayList
 * 		如果查询少,增删多,则使用LinkedList
 * 		如果你不知道使用什么,则使用ArrayList
 * 
 * LinkedList的特有功能:
 * 			void addFirst(E e)  
 * 			void addLast(E e) 
 			E getFirst()  
 			E getLast()  
 			E removeFirst() 
 			E removeLast() 
 * 				
 */
public class LinkedListDemo {
	public static void main(String[] args) {
			LinkedList list = new LinkedList();
			list.add("hello");
			list.add("world");

			//void addFirst(E e)  :将元素添加到索引为0的位置
 			//void addLast(E e) :将元素添加到索引为size()-1的位置
			list.addFirst("java");
			list.addLast("android");

 			//E getFirst()  :获取索引为0的元素
 			//E getLast()  :获取索引为size()-1的元素
			//System.out.println(list.getFirst());
			//System.out.println(list.getLast());

 			//E removeFirst() :删除索引为0的元素并返回
 			//E removeLast() :删除索引为size()-1的元素并返回
			System.out.println(list.removeFirst());
			System.out.println(list.removeLast());			System.out.println(list);
	}
}````
**代码案例**
````
/*
 * 需求:定义一个方法,返回指定列表中指定元素的索引位置
 * 
 * 判断元素是否存在
 * 
 */
public class ListTest {
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("hello");
		list.add("world");
		list.add("java");

		//int index = index(list,"php");
		//System.out.println(index);

		//boolean flag = contains(list, "php");
		//System.out.println(flag);

		boolean flag = list.contains("php");
		System.out.println(flag);
	}

	public static int index(List list,Object other) {
		for(int x = 0;x < list.size();x++) {
			//获取列表中的元素
			Object obj = list.get(x);
			//使用列表中的元素和指定的元素进行比较
			if(obj.equals(other)) {
				return x;
			}
		}
		//查找不到指定的元素
		return -1;
	}

	public static boolean contains(List list,Object other) {
		//获取指定元素在指定列表中的索引位置
		int index = index(list,other);
		//如果索引位置大于等于0,则认为元素存在,否则不存在
		if(index >= 0) {
			return true;
		}
		else {
			return false;
		}
	}



}````



标签:index,LinkedList,区别,int,ArrayList,元素,list,System,println
From: https://blog.51cto.com/zhangxueliang/11937085

相关文章

  • emark认证和ce认证有什么区别
    当我们探讨emark认证和CE认证之间的区别时,首先要明确的是,这两种认证都是欧洲市场中常见的产品合规性要求,但它们各自的目标、范围和流程存在显著的不同。下面,我们将详细解析这两种认证之间的主要差异。一、认证目标与应用范围emark认证,也被称为E-mark认证,是欧洲经济委员会(ECE)针对车......
  • 关于Vue2和Vue3的区别及组合式/选项式API区别——高频面试题
    1、vue2和vue3的区别以下包含但不仅仅只有这10条区别但是,在应对面试时,回答已经足够用了,这些也是vue2和vue3的主要区别CompositionAPIvsOptionsAPICompositionAPI:组合式APIOptionsAPI:选项式API——在vue2中使用它们两者在vue3中是组织代码的不同方式Vue3引入了Com......
  • JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的区别
    JavaScript中structuredClone和JSON.parse(JSON.stringify())克隆对象的异同点一、什么是structuredClone?1.structuredClone的发展structuredClone是在ECMAScript2021(ES12)标准中引入的,ECMAScript2021规范正式发布于2021年6月自2022年3月起,该功能适用于最......
  • python 深/浅拷贝及其区别
    概述1、什么是浅拷贝?浅拷贝是指创建一个新的数据结构对象,该对象是原始数据结构的副本,但不复制原始数据结构中的嵌套对象的引用。浅拷贝可以通过各种方式完成,如切片、工厂函数或copy模块的copy方法。2、什么是深拷贝?深拷贝是指创建一个新的数据结构对象,该对象是原始数据结构及......
  • Spring、SpringMVC、SpringBoot都是什么,有什么区别
    Spring、SpringMVC、SpringBoot都是什么,有什么区别Spring:是一个轻量级的基于IOC和AOP的容器框架,是用来简化开发流程的一套框架。IOC:InversionofController控制反转。不好理解的概念:应用不负责依赖对象的创建,而是把它们创建的控制器交给外部容器,这种控制权的转移就是控......
  • QT教程:start()和startTimer()的区别
    start()-QTimer类的成员函数        start()是QTimer类的成员函数,用于启动一个基于QTimer对象的定时器。QTimer是Qt中常用的定时器类,它会在设定的时间间隔后发出timeout()信号。用法QTimertimer;timer.start(1000);//每隔1000毫秒触发一次time......
  • [python]线程与进程的区别及代码演示
    进程与线程多线程socket,tcp服务器实现,在最底下区别:关系区别:​线程依赖于进程,一个进程至少会有一个线程特点区别:进程间的数据是相互隔离的,线程间数据是可以共享的线程同时操作共享数据,可能引发安全问题,需要用到互斥锁进程的资源开销比线程大多进程程序比单......
  • 【机器学习】梯度提升和随机森林的概念、两者在python中的实例以及梯度提升和随机森林
    引言梯度提升(GradientBoosting)是一种强大的机器学习技术,它通过迭代地训练决策树来最小化损失函数,以提高模型的预测性能随机森林(RandomForest)是一种基于树的集成学习算法,它通过组合多个决策树来提高预测的准确性和稳定性文章目录引言一、梯度提升1.1基本原理1.1.1......
  • Python 和 Java 区别是什么?哪个运行效率高?为什么?
    一、Python和Java的区别1.编程风格•Python是一种解释型动态编程语言,语法简洁、灵活,代码较为简洁直观,注重代码的可读性和简洁性,使用缩进来表示代码块。•Java是一种编译型静态编程语言,语法相对严谨,代码风格较为规范,需要明确声明变量类型,使用大括号来表示代码块。2.......
  • 宿主机和物理机的区别在哪
    宿主机和物理机是服务器领域常用的两个术语,它们分别指代不同的概念。以下是它们之间的主要区别:物理机物理机是指实际存在的硬件服务器,它由处理器、内存、硬盘、网络接口卡等物理组件构成。以下是物理机的特点:硬件实体:物理机是你可以触摸和看到的硬件设备。独立性:物理机运行自己的操......