Java 第六章 集合(1)

news/2025/2/22 0:27:54/

目录

集合概述

创建集合的原因:

集合框架 

​编辑

Collection接口

List 接口及实现类

实现类

数组与链表

ArrayList的常用方法

增加:

删除:

替换:

判断:

查询:

转换:

List接口集合迭代

● for循环遍历

● 增强for循环的遍历

● 迭代器遍历(Iterator)

LinkedList的常用方法

增加

判断

查询

删除


集合概述

创建集合的原因:

  •  当我们需要保存一组一样(类型相同)的元素的时候,我们应该使用一个容器 来存储,数组就是这样一个容器,但数组一旦定义,长度将不能再变化。
  • ●然而在我们的开发实践中,经常需要保存一些变长的数据集合,于是,我们需 要一些能够动态增长长度的容器来保存我们的数据, 而我们需要对数据的保存的逻辑可能各种各样,于是就有了各种各样的数据结 构。Java中对于各种数据结构的实现,就是我们用到的集合。

集合框架 

Java的集合框架是由很多接口抽象类具体类组成的,都位于java.util包中。

Collection接口

● Collection 接口定义了存取一组对象的方法,其子接口SetList分别定义了 存储方式。

● List 中的数据有顺序(添加顺序)且可以重复

● Set 中的数据不可以重复

List 接口及实现类


实现类

List接口继承了Collection接口,有三个实现的类

ArrayList

数组列表,底层采用数组存储。查询快,中间增删慢

LinkedList

链表列表,底层采用链表存储。查询慢,中间增删快

Vector

数组列表,添加同步锁,线程安全


数组与链表

ArrayList是长度可变的数组,在内存中分配连续的空间。

遍历元素和随机访问元素的效率比较

012345
aaaaddddcccceeeedddd

LinkedList采用链表存储方式,插入、删除元素时效率比较高


ArrayList的常用方法

增加:

  • add(E element)
  • add(int index, E element)
  • addAll(Collection c)
eg.
ArrayList<String> arryList =new ArrayList();
ArrayList<String> arrayList1=new ArrayList();
arrayList1.add("h");
arryList.add("a");
arryList.add("b");
arryList.add("c");
arryList.add("d");//向集合末尾添加元素
arryList.add(1, "w");//向指定位置添加元素
arryList.addAll(arrayList1);//把另一个集合数据添加进来
System.out.println(arryList);

删除:

  • remove(int index)

  • remove(Object o)
  • clear()
ArrayList<String> arryList =new ArrayList();
ArrayList<String> arrayList1=new ArrayList();
arrayList1.add("h");
arryList.add("a");
arryList.add("b");
arryList.add("c");
arryList.add("d");
System.out.println(arryList.remove(2));//根据索引删除对应的元素    并返回删除的元素
System.out.println(arryList.remove("a"));//根据内容删除第一次匹配的元素,删除成功返回true,反之,返回false;


替换:

set(int index, E element)

ArrayList<String> arryList =new ArrayList();
ArrayList<String> arrayList1=new ArrayList();
arrayList1.add("h");
arryList.add("a");
arryList.add("b");
arryList.add("c");
arryList.add("d");
System.out.println(arryList.set(1, "E"));//替换指定位值的元素

判断:

  • i sEmpty()
  • contains(Object o)
  • indexOf(Object o)
ArrayList<String> arryList =new ArrayList();
ArrayList<String> arrayList1=new ArrayList();
arrayList1.add("h");
arryList.add("a");
arryList.add("b");
arryList.add("c");
arryList.add("d");
System.out.println(arrayList.isEmpty());//判断集合是否为空集
System.out.println(arrayList.contains("b"));//判断是否包含指定的元素System.out.println(arrayList.indexOf("a"));//判断集合中对应元素的索引

查询:

  • get(int index)
  • size()
ArrayList<String> arryList =new ArrayList();
ArrayList<String> arrayList1=new ArrayList();
arrayList1.add("h");
arryList.add("a");
arryList.add("b");
arryList.add("c");
arryList.add("d");
System.out.println(arryList.size());//返回的是实际添加的元素的长度System.out.println(arryList.get(3)); //获取指定位值的元素

转换:

toArray(T[] a)

System.out.println(arryList);
ArrayList<String> arrayList2 =new ArrayList<>();
arrayList2.add("h");
arrayList2.add("a");
arrayList2.add("b");
arrayList2.add("c");
arrayList2.add("d");
//集合转数组
String [] string = arrayList2.toArray(new String[arrayList.size()]);
System.out.println(Arrays.toString(string)); 

List接口集合迭代

建立一个集合

ArrayList<String> arrayList2 =new ArrayList<>();
arrayList2.add("h");
arrayList2.add("a");
arrayList2.add("b");
arrayList2.add("c");
arrayList2.add("d");

● for循环遍历

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

● 增强for循环的遍历

for (String t :arrayList2){System.out.println(t);
}

● 迭代器遍历(Iterator)

使用集合中提供的迭代器  专门用来遍历集合数据
Iterator<String> iterator = arrayList2.iterator();
while (iterator.hasNext()){  String item = iterator.next();System.out.println(item);
}
//区别:iterator:只能从头开始遍历ListIteror:可以从头或从尾开始遍历
ListIterator<String> listIterator = arrayList2.listIterator(arrayList.size());
while (listIterator.hasNext()){ //从头开始遍历String item1 =listIterator.next();System.out.println(item1);}
while (listIterator.hasPrevious()){ //从尾开始遍历String item2 =listIterator.previous();System.out.println(item2);
}

LinkedList的常用方法

增加

  • add(E e)
  • add(int index,Eelement)
  • set(int index, E element)
  • addFirst(Eelement)
  • addLast(Eelement)
LinkedList<String>list = new LinkedList<>();
list.add("adc");
list.add("ssa");
list.add("qwe");
list.add(0, "add");//向指定位置添加元素
list.addFirst("name");//向头加元素
list.addLast("success");//向尾添加元素
System.out.println(list);
System.out.println(list.get(3));//只能从头或从尾开始查找,直到找到对应位置的元素
list.set(2, "40");//在索引为2当前位置添加“40”

判断

  • contains(Object o)
  • i sEmpty()

查询

  • get(int index)
  • getLast()
LinkedList<Integer> linkedList= new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.add(3);
linkedList.add(4);
linkedList.add(5);
linkedList.add(6);
System.out.println(linkedList.getFirst());

删除

  • removeLast()
  • remove(int index)
LinkedList<String>list = new LinkedList<>();
list.add("adc");list.add("ssa"); 
list.add("qwe");
//删除
System.out.println(list.remove(2));
System.out.println(list.removeFirst());
System.out.println(list.removeLast());

http://www.ppmy.cn/news/1573725.html

相关文章

DeepSeek等大模型功能集成到WPS中的详细步骤

记录下将**DeepSeek功能集成到WPS中**的步骤&#xff0c;以备忘。 1. 下载并安装OfficeAI插件 访问OfficeAI插件下载地址&#xff1a;https://www.office-ai.cn/&#xff0c;下载插件&#xff08;目前只支持windows系统&#xff09;。 注意&#xff0c;有两个插件&#xff0…

frameworks 之 Activity添加View

frameworks 之 Activity添加View 1 LaunchActivityItem1.1 Activity 创建1.2 PhoneWindow 创建1.3 DecorView 创建 2 ResumeActivityItem 讲解 Activity加载View的时机和流程 涉及到的类如下 frameworks/base/core/java/android/app/Activity.javaframeworks/base/services/cor…

数智驱动:医学编程与建模技术在智慧医院AI建设中的创新与变革

一、引言 1.1 研究背景与意义 在信息技术飞速发展的数智化时代,医疗行业正经历着深刻变革,医院的发展模式也在不断转型升级。随着人口老龄化加剧、疾病谱的变化以及人们对医疗服务质量要求的日益提高,传统的医疗模式已难以满足社会的需求,智慧医院建设成为医疗行业发展的…

嵌入式学习(18)---Linux文件编程中的进程

一、进程的概念 进程:(用来描述 程序动态执行的过程&#xff0c;方便操作系统管理的) 进行中的程序 程序的一次执行过程 (内存 CPU) 程序的实例 程序 ----加载到内存----> 进程 应用场景: 实现并发 同一时刻 同时发生 并行 …

DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)

前言 在当今数字化时代&#xff0c;AI编程助手已成为提升开发效率的利器。DeepSeek作为一款强大的AI模型&#xff0c;凭借其出色的性能和开源免费的优势&#xff0c;成为许多开发者的首选。今天&#xff0c;就让我们一起探索如何将DeepSeek接入PyCharm&#xff0c;实现高效、智…

[零基础]:用PaddleNLP在4060单卡上实践大模型预训练技术

作者&#xff1a;算力魔方创始人/英特尔创新大使刘力 之前我们分享了《从零开始训练一个大语言模型需要投资多少钱》&#xff0c;其中高昂的预训练费用让许多对大模型预训练技术感兴趣的朋友望而却步。 应广大读者的需求&#xff0c;本文将手把手教您如何在单张消费级显卡上&…

【Python爬虫(18)】解锁验证码识别:Python爬虫进阶秘籍

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…

J3打卡——DenseNet模型实现鸟类分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.检查GPU import tensorflow as tf gpustf.config.list_physical_devices("GPU") if gpus:tf.config.experimental.set_memory_growth(gpus[0],Tru…