List容器(Java)

文章目录

    • 1.容器介绍
      • 1.1 容器接口结构
      • 1.2 简单解析
    • 2. List容器创建(Member functions)
    • 3. 访问操作(Element access)
      • 3.1 get()
      • 3.2 Iterator遍历
      • 3.3 增强for循环
    • 4. 修改操作(Modifiers)
      • 4.1 add()
      • 4.2 addAll()
      • 4.3 remove()
      • 4.4 set()
    • 5. 容量操作(Member functions)
      • 5.1 clear() + contains() + isEmpty() + size()
    • 6. 其他操作(Other)
      • 6.1 toArray()

1.容器介绍

1.1 容器接口结构

  a. Java存储结构划分
  Java当中按照存储结构可以划分成为两个大类,分别是单列集合 java.util.Collection 和 双列集合 java.util.Map, 顾名思义Collection是实现单列集合的根接口, 而Map则是实现双列集合(键值对)的根接口。

  b. 单列接口Collection
在这里插入图片描述
  单列接口Collection当中下面可以看到存在许多的子接口例如,List接口,Set接口等等,今天我们着重介绍的就是List接口,即List容器当中的一些通用的操作和常用的实现类举例.

  c. List接口 : 有序 + 重复
在这里插入图片描述
  List接口当下拥有许多的实现类,其中常用的实现类有ArrayList,LinkedList,Vector等等,不同的实现类其底层实现的接口也会有不同,可能是用数组实现也可能是用链表进行实现的,不同的实现类也可能会拥有一些不同的操作方法。例如对于LinkList因为其底层实现了Deque接口所以其相对List接口以外还会有一些支持双端队头队尾的操作(addFirst, addLast)等.

1.2 简单解析

 A. 包路径:java.util.List
 B. List核心:单列 + 重复 + 有序
 C. 注意:下面使用ArrayList进行方法举例,所使用的方法全部是List接口的通用方法,不是ArrayList实现类的特有方法,是所有实现List接口实现类的所有通用方法,支持所有List接口下实现类的使用
 D. 常用实现类举例:
 ArrayList实现类:数组结构 + 查询快 + 增删慢
在这里插入图片描述

2. List容器创建(Member functions)

  使用ArrayList实现类

import java.util.ArrayList;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>(); // 指定具体对象Integer的List容器
		
	}
}

3. 访问操作(Element access)

3.1 get()

  索引访问:因为是有序存储的,所以肯定是支持索引访问的,即可以通过索引进行访问指定位置元素
在这里插入图片描述

import java.util.ArrayList;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < 5; i ++ ) list.add(i);
		
		for(int i = 0; i < list.size(); i ++ ) // list.get()
		System.out.println(list.get(i)); // 0 1 2 3 4
	}
}

3.2 Iterator遍历

  迭代器访问:因为继承了迭代器Iterable接口,支持迭代器的访问操作
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < 5; i ++ ) list.add(i);
		
		Iterator<Integer> it = list.iterator();
		while(it.hasNext()) {
			System.out.println(it.next()); // 0 1 2 3 4
		}
		
		it = list.listIterator(2); // 从指定位置开始的迭代器
		while(it.hasNext()) {
			System.out.println(it.next()); // 2 3 4
		}
	}
}

3.3 增强for循环

  增强for循环:支持直接使用增强的for循环直接遍历容器内所有元素

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < 5; i ++ ) list.add(i);
		
		for(Integer it : list) // 增强for循环直接遍历所有元素
		System.out.println(it); // 0 1 2 3 4
	}
}

4. 修改操作(Modifiers)

4.1 add()

  单个元素添加 :
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		
		for(int i = 3; i > 0; i -- ) list.add(i);
		for(int i : list) System.out.print(i + " "); // 3 2 1
		System.out.println();
		
		list.add(0, 100); // 向指定位置插入元素
		for(int i : list) System.out.print(i + " "); // 100 3 2 1
		
	}
}

4.2 addAll()

  多个元素添加 :
在这里插入图片描述

public class Main {
	// 泛型使用,输出ArrayList所有Number范围内数据类型(只有在调用时才确定数据类型)
	public static void print(ArrayList<? extends Number> temp) { 
		System.out.println(temp);
	}	
	
	public static void main(String[] args) {
		ArrayList<Number> list = new ArrayList<Number>();
		for(int i = 0; i < 2; i ++ ) list.add(i);
		print(list); // [0, 1]
		
		ArrayList<Number> list1 = new ArrayList<Number>();
		list1.add(0.1); list1.add(0.2);
		list.addAll(list1); // 添加到元素结尾
		print(list); //[0, 1, 0.1, 0.2]	
		
		ArrayList<Number> list2 = new ArrayList<Number>();
		list2.add(0.3); list2.add(0.4);
		list.addAll(0, list2); // 插入到指定位置后面
		print(list); //[0.3, 0.4, 0, 1, 0.1, 0.2]	
		
	}
}

4.3 remove()

  单个元素删除:remove方法默认是删除指定位置上的元素,如果想使用第二个方法,一定要记得进行强制类型转换(如果存储的元素正好也是int类型), 才会自动对应上第二个方法
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i);
		list.add(2); // 3 2 1 2
		
		list.remove(3); // 根据索引删除
		for(int it : list) System.out.print(it + " "); // 3 2 1
		System.out.println();
		
		list.remove((Integer)3); // 注意 : 删除首次出现的元素对象(若有多个也只会删除第一个对象)
		for(int it : list) System.out.print(it + " "); // 2 1
		
	}
}

4.4 set()

  单个元素替换 :
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i); // 3 2 1
		
		list.set(0, 30); // 元素30替换0位置上的元素
		for(int it : list) System.out.print(it + " "); // 30 2 1
		
	}
}

5. 容量操作(Member functions)

5.1 clear() + contains() + isEmpty() + size()

在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i); // 3 2 1
		
		System.out.println(list.contains(1)); // true
		System.out.println(list.size()); // 3
		System.out.println(list.isEmpty()); // false
		list.clear();
		System.out.println(list.isEmpty()); // true
	}
}

6. 其他操作(Other)

6.1 toArray()

a. toArray(): 将元素按适当顺序返回成为一个数组
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i); // 3 2 1
		
		Object[] arr = list.toArray();
		for(Object i : arr) System.out.print(i + " "); // 3 2 1
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

傻白入门芯片设计,形式化验证方法学——AveMC工具学习(二十)

目录 一、形式验证方法学 &#xff08;一&#xff09;什么是形式化验证&#xff1f; &#xff08;二&#xff09;与传统验证的区别&#xff1f; 二、AveMC工具学习 &#xff08;一&#xff09;什么是AveMC&#xff1f; &#xff08;二&#xff09;AveMC的工作逻辑&#x…

Redis整合jedis 学习

前言 redis简单来讲是内存数据库&#xff0c;因为是将数据存放到内存&#xff0c;因此读写速率高快(传统数据库&#xff0c;不是先从内存转到硬存&#xff0c;慢) 1.jedis连接Redis redis是java操作redis的客户端&#xff0c;通过他我们能通过java语句操控redis。 jedis对于…

全国大数据与计算智能挑战赛:面向低资源的命名实体识别基线方案,排名13/64,组织单位:国防科技大学系统工程学院(大数据与决策实验室)

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

一起学SF框架系列6.1-模块core-Resource

Java虽然提供了java.net.URL类和各种URL前缀处理程序来负责处理对各种资源的访问&#xff0c;但对于低级别资源的访问来说还是不够充分。例如&#xff0c;没有标准化的实现可用于访问需要从类路径中获取或者相对于一个ServletContext的资源&#xff1b;也没有检查所指向的资源是…

Linux 正则表达式

正则表达式有什么用&#xff1f;最基本的爬虫会用到&#xff0c;正则表达式简单来说就是匹配字符串的 比如&#xff1a;你匹配所有图片的链接地址 <img src"------(图片链接地址)"> 比如、abc/def URL:在WWW上&#xff0c;每一信息资源都有统一的且在网上…

(opencv)图像几何变换——缩放

图像缩放是指将图像的尺寸变小或变大的过程&#xff0c;也就是减少或增加源图像数据的像素个数。图像缩放一定程度上会造成信息的丢失&#xff0c;因此需要考虑适宜的方法进行操作。 下面介绍两种常用的图像缩放方法的原理及实现 1.基于等间隔提取图像缩放 等间隔提取图像缩…

机器视觉初步5-1:图像平滑专题

在计算机视觉领域&#xff0c;图像平滑处理是一个重要的任务&#xff0c;用于降低噪声&#xff0c;提高图像质量。常见的图像平滑算法有均值滤波、中值滤波、高斯滤波等。本文将介绍这些算法的原理&#xff0c;并分别给出使用Python与Halcon实现的代码。&#xff08;当前版本&a…

什么是微软的 Application Framework?

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天来看一下什么是微软的 Application Framework&#xff1f; 到底什么是 Application Framework&#xff1f; 我当年学习这个的时候也困惑了好久&#xff0c;于是一直在搜索这个概念有没有好的解释&#…

ChatGPT时代:ChatGPT全能应用一本通

引言 随着人工智能技术的不断发展和进步&#xff0c;我们进入了ChatGPT时代。ChatGPT是基于GPT架构的大型语言模型&#xff0c;它具备强大的自然语言处理和生成能力&#xff0c;使得我们能够进行更加自由、流畅的对话。作为ChatGPT的全能应用&#xff0c;它可以被视为一本通&a…

【性能优化】性能优化

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 性能优化运行效率加载效率减少HTTP请求数量使用CDN缓存压缩文件、混淆样式表放在顶部、js代码放…

广告数仓:采集通道创建

系列文章目录 广告数仓&#xff1a;采集通道创建 文章目录 系列文章目录前言一、环境和模拟数据准备1.hadoop集群2.mysql安装3.生成曝光测试数据 二、广告管理平台数据采集1.安装DataX2.上传脚本生成器3.生成传输脚本4.编写全量传输脚本 三、曝光点击检测数据采集1.安装Zookee…

大数据周会-本周学习内容总结018

开会时间&#xff1a;2023.06.18 15:00 线下会议 01【调研-数据分析&#xff08;质量、ETL、可视化&#xff09;】 ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform…

开源游戏区块链项目分享:Unity开发的独立区块链

Arouse Blockchain [Unity独立区块链] ❗️千万别被误导&#xff0c;上图内容虽然都在项目中可寻&#xff0c;但与目前区块链的业务代码关联不大&#xff0c;仅供宣传作用(总得放些图看着好看)。之所以有以上内容是项目有个目标功能是希望每个用户在区块链上都有一个独一无二的…

如何看待 Facebook 上线支付功能?

随着科技的不断进步&#xff0c;电子支付在我们的生活中变得越来越普遍。最近&#xff0c;Facebook宣布推出自己的支付功能&#xff0c;这引起了广泛的关注和讨论。作为世界上最大的社交媒体平台之一&#xff0c;Facebook进入支付领域的举措无疑具有重要意义。那么&#xff0c;…

13年测试老鸟,带你详探服务端的接口测试,测试内卷之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 服务器的接口测试…

数据库第三章(SQL)

目录 1.SQL语言 索引 1.SQL语言 sql语言是个非过程性语言 sql的特点 1.综合统一&#xff0c;把增删查改都统一了起来 2.高度非过程化&#xff0c;不关心过程 3.面向集合的操作方式 sql基本语法 drop是删除表 delete是删除表的某个元组 安全方面&#xff1a;grant授权 revo…

EXCEL函数笔记1(数学函数、文本函数、日期函数)

数学函数 取整&#xff1a;INT(number) 取余&#xff1a;MOD(number,除数) 四舍五入&#xff1a;ROUND(number&#xff0c;保留几位小数) 取绝对值&#xff1a;ABS(number) 根号处理&#xff1a;SQRT&#xff08;number&#xff09; 0到1随机数&#xff1a;RAND&#xff08;&am…

【机器学习】十大算法之一 “朴素贝叶斯”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

【LeetCode】每日一题 -- 1171. 从链表中删去总和值为零的连续节点 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/remove-zero-sum-consecutive-nodes-from-linked-list/ 1. 题解&#xff08;1171. 从链表中删去总和值为零的连续节点&#xff09; 2021年字节二面真题 1.1 暴力解法&#xff1a;穷举 时间复杂度 O(n2)&#xff0c;空间复杂…

【论文】attention is all you need

重点在第三节 attention is all you need摘要1. 绪论2. 背景3. 模型架构3.1 编码器和解码器堆叠 3.2 注意力3.2.1 缩放点积注意力&#xff08;Scaled Dot-Product Attention&#xff09;3.2.2 多头注意力机制3.2.3 模型中注意力的应用 3.3 职位感知前馈网络&#xff08;Positio…