当前位置: 首页 > news >正文

重学java 49 List接口

但逢良辰,顺颂时宜

                           —— 24.5.28

一、List接口

1.概述:

        是collection接口的子接口

2.常见的实现类:

        ArrayList LinkedList Vector

二、List集合下的实现类

1.ArrayList集合的使用及源码分析

        1.概述

                ArrayList是List接口的实现类

        2.特点

                a.元素有序 —> 按照什么顺序存的,就按照什么顺序取
                b.元素可重复
                c.有索引 —> 可以利用索引去操作元素
                d.线程不安全

        3.数据结构:数组

        4.常用方法

                boolean add(E e) —> 将元素添加到集合中 —> 尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)
                void add(int index,E element) —> 在指定索引位置上添加元素

                boolean remove(Object o) —> 删除指定的元素,删除成功为true,失败为false

                E remove(int index) —> 删除指定索引位置上的元素,返回的是被删除的元素        

                E set(int index,E element) > 将指定索引位置上的元素,修改成后面的element元素

                E get(int index) > 根据索引获取元素
                int size() > 获取集合元素个数

        5.示例

package S83SetFrame;import java.util.ArrayList;public class Demo226List {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();// boolean add(E e)->将元素添加到集合中->尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)list.add("一切都会好的");list.add("我一直相信");list.add("万事胜意");System.out.println(list);   // [一切都会好的, 我一直相信, 万事胜意]// void add(int index,E element)->在指定索引位置上添加元素list.add(2,"苦难是花开的伏笔");System.out.println(list);   // [一切都会好的, 我一直相信, 苦难是花开的伏笔, 万事胜意]// boolean remove(0bject o)->删除指定的元素,删除成功为true,失败为falselist.remove("苦难是花开的伏笔");System.out.println(list);   // [一切都会好的, 我一直相信, 万事胜意]// E remove(int index)->删除指定索引位置上的元素,返回的是被删除的那个元素String res = list.remove(2);System.out.println(res);    // 万事胜意System.out.println(list);   // [一切都会好的, 我一直相信]// E set(int index,E element)->将指定索引位置上的元素,修改成后面的element元素String res1 = "会好 迟早";list.set(0,res1);System.out.println(list);   // [会好 迟早, 我一直相信]// E get(int index)->根据索引获取元素String res2 = list.get(1);System.out.println(res2);   // 我一直相信// int size()->获取集合元素个数int size = list.size();System.out.println(list.size());    // 2System.out.println(size);   // 2}
}

List集合的遍历:

package S83SetFrame;import java.util.ArrayList;
import java.util.Iterator;public class Demo227ListForeach {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();// boolean add(E e)->将元素添加到集合中->尾部(add方法一定能添加成功的,所以我们不用boolean接收返回值)list.add("一切都会好的");list.add("我一直相信");list.add("万事胜意");// 遍历方式1:Iterator<String> iterator = list.iterator();while (iterator.hasNext()){System.out.println(iterator.next());}// 遍历方式2: 快捷键: 集合名.forifor (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}}
}

列表元素是整数型的删除

需求:删除2
remove(object o)->直接删除指定元素
remove(int index)->删除指定索引位置上的元素
如果remove中直接传递整数,默认调用按照指定索引删除元素的remove但是此时1ist中没有2索引,所以越界
解决:我们可以将2包装成包装类,变成包装类之后,其父类就是object
package S83SetFrame;import java.util.ArrayList;public class Demo228ListDeleteInt {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<Integer>();list.add(2);
//         需求:删除2
//         remove(object o)->直接删除指定元素
//         remove(int index)->删除指定索引位置上的元素
//         如果remove中直接传递整数,默认调用按照指定索引删除元素的remove但是此时1ist中没有2索引,所以越界
//         解决:我们可以将2包装成包装类,变成包装类之后,其父类就是object了list.remove(new Integer(2));System.out.println(list);}
}

6.ArrayList构造方法:

        a.ArrayList()        构造一个初始容量为十的空列表

        b.ArrayList(int initialcapacity)        构造具有指定初始容量的空列表

7.ArrayList源码总结:

        a.不是一new底层就会创建初始容量为10的空列表,而是第一次add的时候才会创建初始化容量为10的空列表

        b.ArrayList底层是数组,那么为啥还说集合长度可变呢?

                ArrayList底层会自动扩容 —> Arrays.copyof
        c.扩容多少倍?
                1.5倍

2.LinkedList集合的使用及源码分析

        1.概述

                LinkedList是List接口的实现类

        2.特点

                a.元素有序
                b.元素可重复
                c.有索引 —> 这里说的有索引仅仅指有操作索引的方法,不代表本质上具有索引
                d.线程不安全

        3.数据结构

                双向链表

        4.方法

                public void addFirst(E e):将指定元素插入此列表的开头。
                public void addLast(E e):将指定元素添加到此列表的结尾。
                public E getFirst():返回此列表的第一个元素。
                public E getLast():返回此列表的最后一个元素。
                public E removeFirst():移除并返回此列表的第一个元素。
                public E removeLast():移除并返回此列表的最后一个元素。
                public E pop():从此列表所表示的堆栈处弹出一个元素。
                public void push(E e):将元素推入此列表所表示的堆栈。
                public boolean isEmpty():如果列表没有元素,则返回true。

        5.示例

package S83SetFrame;import java.util.LinkedList;public class Demo229LinkedList {public static void main(String[] args) {LinkedList<String> linkedList = new LinkedList<>();linkedList.add("A");linkedList.add("B");linkedList.add("C");linkedList.add("D");linkedList.add("E");System.out.println(linkedList);//        public void addFirst(E e):将指定元素插入此列表的开头。linkedList.addFirst("F");linkedList.addFirst("G");System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public void addLast(E e):将指定元素添加到此列表的结尾。linkedList.addLast("H");linkedList.addLast("I");linkedList.addLast("J");System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public E getFirst():返此列表的第一个元素。System.out.println(linkedList);System.out.println(linkedList.getFirst());System.out.println("————————————————————————————————————");//        public E getLast():返回此列表的最后一个元素。System.out.println(linkedList);System.out.println(linkedList.getLast());System.out.println("————————————————————————————————————");//        public E removeFirst():移除并返回此列表的第一个元素。String ele = linkedList.removeFirst();System.out.println(ele);System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public E removeLast():移除并返回此列表的最后一个元素。String ele2 = linkedList.removeLast();System.out.println(ele2);System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public E pop():从此列表所表示的堆栈处弹出一个元素。System.out.println(linkedList.pop());System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public void push(E e):将元素推入此列表所表示的堆栈。linkedList.push("K");System.out.println(linkedList);System.out.println("————————————————————————————————————");//        public boolean isEmpty():如果列表没有元素,则返回true.System.out.println(linkedList.isEmpty());}
}

linkedList的遍历

package S83SetFrame;import java.util.Iterator;
import java.util.LinkedList;public class Demo230LinkedListForeach {public static void main(String[] args) {LinkedList<String> linkedList = new LinkedList<>();linkedList.add("A");linkedList.add("B");linkedList.add("C");linkedList.add("D");linkedList.add("E");System.out.println(linkedList);// 遍历Iterator<String> iterator = linkedList.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}// 根据索引遍历for (int i = 0; i < linkedList.size(); i++) {System.out.println(linkedList.get(i));}}
}

http://www.lryc.cn/news/355816.html

相关文章:

  • 【html+css(大作业)】二级菜单导航栏
  • 算法基础之集合-Nim游戏
  • Diffusion Model, Stable Diffusion, Stable Diffusion XL 详解
  • 智能奶柜:重塑牛奶零售新篇章
  • 源代码防泄密--沙盒技术安全风险分析
  • 韭菜收割项目
  • Unity3D输入事件
  • c++ thread detach
  • 入门四认识HTML
  • js怎么生成验证码?js生成指定长度的随机字符串
  • Python魔法之旅-魔法方法(01)
  • 介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块
  • vue2如何父组件 对象 双向绑定子组件
  • [Android]在后台线程执行耗时操作,然后在主线程更新UI
  • 平方回文数-第13届蓝桥杯选拔赛Python真题精选
  • 位置编码(三) 2D旋转位置编码
  • 1、pikachu靶场之xss钓鱼复现
  • 弘君资本炒股技巧:股票定向增发是什么意思?是好是坏?
  • vue3项目使用pinia状态管理器----通俗易懂
  • 零基础学Java第二十五天之Lambda表达式
  • VSCode配置Lua5.4安装
  • CI/CD:持续集成/持续部署
  • ComfyUI工作流网站
  • 【机器学习】机器学习基础概念与初步探索
  • 学英语材料:单口喜剧、讲故事、短剧喜剧以及广播剧和播客节目
  • Docker Compose使用
  • 如何优雅的卸载linux上的todesk
  • 【Vue】el-checkbox多选框实现单选效果,选中一个选项则自动取消其他勾选
  • Linux中使用vi编辑器自动缩进4个字符
  • #笔记#笔记#其他