(二十四)List系列集合

news/2023/5/28 9:10:14

目录

        前言:

        一、List集合的特有方法

二、List集合的遍历方式有几种?

三、Arraylist集合底层原理

四、LinkedList的特点


前言:

        List集合包括JavaList接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序放是对象插入的顺序,类似Java中的数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。

        List的最重要的特征就是有序;它会确保以一定的顺序保存元素。List在Collection的基础上添加了大量方法,使之能在序列中间插入和删除元素。(只对LinkedList推荐使用。)

        List可以制造ListIterator对象,你除了能用它在List的中间插入和删除元素之外,还能用它沿两个方向遍历List。

一、List集合的特有方法

        List集合因为支持索引,所以多了很多索引操作的独特API,其他Collection的功能List也都继承了。

 

2.代码演示:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
​
/**List* Arraylist  Linkedlist 有序、可重复、有索引* LinkList :API* addFirst(E,e)  在该列表开头插入指定的元素* addLast(E,e)  将指定的元素追加到此列表的末尾* getFirst()  返回此列表的第一个元素* getLast()  返回此列表的最后一个元素* removeFirst()  删除并返回第一个元素* removeLast()  删除并返回最后一个元素*/
​
/**集合并发修改异常问题* 找出某些元素并修改时容易出并发修改异常问题*/
public class List_Demo {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("JAVA");list.add("JAVA");list.add("MYsql");list.add("Python");//在某个索引位置添加数据list.add(2, "html");System.out.println(list);//根据索引删除元素System.out.println(list.remove(2));System.out.println(list);//根据索引获取元素System.out.println(list.get(2));//修改索引位置的元素 ,返回修改前的数据System.out.println(list.set(1, "Myprict"));System.out.println(list);}
}

3.List的实现类的底层原理

        ArrayList底层是基于数组实现的,根据查询元素快,增删相对慢;

        linkedList底层是基于双链表实现的,查询元素慢,增删首尾元素是非常快的。

二、List集合的遍历方式有几种?

                ①迭代器

                ②增强for循环

                ③Lambda表达式

                ④for循环(因为List集合存在索引)

4.代码演示:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
​
public class ListDemo2 {public static void main(String[] args) {List<String> lists = new ArrayList<>();lists.add("JAVA");lists.add("JAVA");lists.add("MYsql");lists.add("Python");//1.for循环System.out.println("--------------");for (int i = 0; i < lists.size(); i++) {String ele = lists.get(i);System.out.println(ele);}//2.迭代器System.out.println("--------------");Iterator<String> it = lists.iterator();while (it.hasNext()){String ele = it.next();System.out.println(ele);}//3.foreachSystem.out.println("-----------");for (String ele : lists) {System.out.println(ele);}//4.Lambda表达式System.out.println("--------------");lists.forEach(s -> {System.out.println(s);});}
}

三、Arraylist集合底层原理

        Arraylist集合底层是基于数组实现的:根据索引定位元素快,增删需要做元素的移位操作。

        第一次创建集合并添加第一个元素的时候,在底层创建一个默认长度为10的数组。

四、LinkedList的特点

        底层数据结构是双链表,查询慢,首尾操作的速度是极快的,所以多了很多首尾操作的特有API。

5.LinkedList集合的特有功能

6.代码演示:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
​
/**List* Arraylist  Linkedlist 有序、可重复、有索引* LinkList :API* addFirst(E,e)  在该列表开头插入指定的元素* addLast(E,e)  将指定的元素追加到此列表的末尾* getFirst()  返回此列表的第一个元素* getLast()  返回此列表的最后一个元素* removeFirst()  删除并返回第一个元素* removeLast()  删除并返回最后一个元素*/
​
/**集合并发修改异常问题* 找出某些元素并修改时容易出并发修改异常问题*/
public class List_Demo {public static void main(String[] args) {//LinkedList可以完成队列结构和栈结构(双链表)//栈LinkedList<String> stack = new LinkedList<>();//入栈stack.push("第一颗子弹");stack.addFirst("第二颗子弹");stack.addFirst("第三颗子弹");stack.addFirst("第四颗子弹");stack.addFirst("第五颗子弹");stack.addFirst("第六颗子弹");System.out.println(stack);//出栈System.out.println(stack.removeFirst());System.out.println(stack.pop());System.out.println(stack);System.out.println("==================================");//队列LinkedList<String> queue = new LinkedList<>();//入队queue.offerLast("1号");queue.addLast("2号");queue.addLast("3号");queue.addLast("4号");queue.addLast("5号");//出队System.out.println(queue.removeFirst());System.out.println(queue);
​System.out.println("=============================");//结合并发修改异常//迭代器Iterator<String> it = list.iterator();while (it.hasNext()) {String ele = it.next();if ("JAVA".equals(ele)) {
//                list.remove("JAVA");//会报错it.remove();//正确}}System.out.println(list);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

67 2020:我的总结和给圈友的话【2020-12-31 0003】

年末&#xff0c;习惯写点什么&#xff0c;然而今天几个矿正在赶着挖&#xff0c;来不及写公众号的年末总结了&#xff0c;昨天写了篇知识星球的&#xff0c;所以直接搬过来了&#xff0c;嗯其实没那么合适&#xff0c;因为只有在星球里&#xff0c;才能看这些文字有更深的共鸣…

加密市场的「五维投资法」

一. 投资决策三要素 投资方法纷繁庞杂&#xff0c;但万变不离其宗&#xff0c;影响最终收益的因素&#xff0c;脱不开三个方面&#xff1a;胜率、赔率、仓位&#xff0c;通俗来说&#xff1a; 胜率&#xff1a;这一项投资&#xff0c;赢面有多大&#xff1f;有多大的把握盈利…

“人工智能”初创公司所面临的问题

2020-05-13 11:08:32 作者&#xff1a;Scott Locklin 编译&#xff1a;ronghuaiyang 导读 AI类公司一直是风投的宠儿&#xff0c;不过随着投资人越来越理智&#xff0c;情况开始有了变化。 Andreessen-Horowitz一直是当前主要风投公司中头脑最冷静的人。当其他公司在“cleantec…

python简单小游戏赌大小分析_用Python设计一个经典小游戏:猜大小

原标题&#xff1a;用Python设计一个经典小游戏&#xff1a;猜大小 本文主要介绍如何用Python设计一个经典小游戏&#xff1a;猜大小。 游戏规则&#xff1a; 初始本金是1000元&#xff0c;默认赔率是1倍&#xff0c;赢了&#xff0c;获得一倍金额&#xff0c;输了&#xff0c;…

本金20000 每次下200押大小,不中就翻倍 ,玩多少次能倍投到破产??

package zxcz; import java.util.Random; public class Time2 { public static void main(String orgs[]){ double all20000,all20; int a,t,num1,x0; double bet20000,startbet,maxbet0; for(int j1;j<99999;j){ if(all<bet) betall; else bet200; startbetbet; a(int)

R语言贝叶斯方法在生态环境领域中的高阶技术应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域&#xff0c;其火爆程度已经跨越了学术圈&#xff0c;如促使其自成统计江湖一派的贝叶斯定理在热播美剧《The Big Bang Theory》中都要秀一把。贝叶斯统计学即贝叶斯学派是一门基本思想与传统基于…

桶排序详细说明及实现-python

前言&#xff1a; 说到桶排序&#xff0c;那必定要有桶&#xff0c;那么桶的作用是什么呢&#xff1f;桶的作用就是将序列分为若干份放到桶中&#xff0c;每个桶中能装入的数量范围是一定的&#xff0c;只有最后一个桶可以设置装入很多。这是因为当分的桶一定时&#xff0c;前面…

微信小程序 27 进度条的动态实现和搜索框、热搜榜的静态搭建

27.1 进度条的动态实现 // 音乐管理者实时播放的进度appInstance.globalData.backgroundAudioManager.onTimeUpdate(() > {let currentTime moment(appInstance.globalData.backgroundAudioManager.currentTime * 1000).format(mm:ss);if(this.data.isPlay && this…

微博热门搜索榜爬取

新浪微博的热搜榜网址是http://s.weibo.com/top/summary&#xff0c;总共有50条&#xff0c;如图所示 使用BeautifulSoup包&#xff0c;直接上代码&#xff1a; import requests import json from lxml import html from bs4 import BeautifulSoupetree html.etree headers …

【Python案例】爬取某bo热搜榜并做动态数据展示

目录前言正文基本开发环境相关模块的使用需求数据来源分析代码实现动态数据展示前言 嗨嗨&#xff0c;大家好啊 最近有没有在某bo吃瓜啊&#xff0c;今年的瓜好像不少哦&#xff0c;近期的李某某事件真的令我大为震惊&#x1f923; 现在的艺人明星还是那句话&#xff1a;该税的…

python爬取微博热搜并存入表格_python 爬取微博实时热搜,并存入数据库实例

刚学python没几天&#xff0c;打算用paython爬去微博热搜数据试验一下&#xff0c;但是发现微博热搜是动态数据&#xff0c;网页源码并不能直接获取想要的数据&#xff0c;network里也并不能找到相关内容&#xff0c;这时重新查看网页源码&#xff0c;发现有类似中文编码的源码…

用PYTHON自动登录SAP GUI

我们都知道&#xff0c;SAP原生的“脚本录制和回放”功能是在用户进入到某一个SAP”用户指定系统“后才可以启用&#xff1a; 也就是说&#xff0c;从这里开始&#xff0c;您可以通过脚本录制&#xff0c;生成用户名、密码的输入和SAP登录过程的完整代码&#xff1b; 那么我们…

瓜子IM智能客服系统的数据架构设计(整理自现场演讲)

本文由ITPub根据封宇在【第十届中国系统架构师大会(SACC2018)】现场演讲内容整理而成。 1、引言 瓜子业务重线下&#xff0c;用户网上看车、预约到店、成交等许多环节都发生在线下。瓜子IM智能客服系统的目的是要把这些线下的活动搬到线上&#xff0c;对线下行为进行追溯&#…

练习代码----第一天

系统&#xff1a;win10&#xff0c; 编辑器 VScode 编译器&#xff1a;g 写代码第一篇 代码&#xff1a; #include<iostream> using namespace std;class MyClass { public: MyClass(int i) { value i; cout << "Con-structor called." << e…

Java语言程序设计基础篇(第十版 梁勇著)课后习题答案 - 第三章

第三章&#xff1a;选择 复习题 3.1 列出 6 个关系操作符。 解&#xff1a; &#xff1e;&#xff0c;&#xff1c;&#xff0c;&#xff1d;&#xff0c;&#xff1e;&#xff1d;&#xff0c;&#xff1c;&#xff1d;&#xff0c;!&#xff1d; 3.2 假设 x 等于 1&#x…

javaWeb学习第二天-------from表单和css

javaWeb学习第二天学习内容form 表单&#xff1a;input标签&#xff1a;文本域:CSS样式&#xff1a;css之块状与行状元素相互转换练习&#xff1a;学习内容 今天的知识点&#xff1a; HTML&#xff1a;form表单和和属性&#xff0c;div&#xff0c;input标签和其属性&#xff…

你离BAT之间,只差这一套Java面试题,MySQL系列

&#xff1f;4、进程同步&#xff1a;生产者消费者问题、哲学家就餐问题、读者写者问题 &#xff01;5、死锁的四个必要条件&#xff0c;避免方法 &#xff01;6、Linux的一些基本命令&#xff0c;如ls、tail、chmod等 计算机网络 &#xff01;1、tcp,udp区别 &#xff01;2、H…

i春秋第二届春秋欢乐赛 classical writeup

i春秋第二届春秋欢乐赛 classical writeup 第一步&#xff1a;题目给出的提示 根据题目我们可以了解这道题应该是一个古典密码的题目&#xff0c;但是古典密码太多了我们如何知道是什么&#xff1f; 看题目给出的附件是一个很长很长的乱序字符串&#xff0c;我们可以想到用词…

Unity 一款漂亮好用的UGUI插件!

Unity — 一款漂亮好用的UGUI插件&#xff01;一&#xff1a;效果图二&#xff1a;太多效果图&#xff0c;自己下载看吧&#xff0c;总有你要的 -_-三&#xff1a;加油&#xff01;致明天的自己&#xff01;本文提供详细教程记录遇到的难点并帮助同行的朋友们坚持以最简单的方法…

一个运用map的文本转换程序

本程序的功能是对文本中需要转换的单词进行转换。 程序需要两个文件&#xff0c;一个文件存放转换单词对照表&#xff0c;另一个文件存放要进行转换的文本。 本程序的文本文件内容如下&#xff1a; trans_word_map.txt em them cuz because gratz grateful i I nah no pos supp…