集合/容器

集合概念

当我们保存一组一样(类型相同)的元素时候,我们应该使用一个容器来存储,就可以采用数组,但是数组存在以下缺点:

        1、长度开始时必须指定,一旦指定就不能更改。

        2、使用数组进行增加元素的步骤比较麻烦

这时候就可以使用一个更高级的容器“集合”来解决这些问题“

        1、可以保存任意多个不同类型的对象,使用方便

        2、提供了一系列的操作方法

        3、使用集合添加。删除元素时更方便

集合体系概述

java的集合有很多,主要分为两大类

//单列集合
ArrayList arrayList = new ArrayList();
arrayList.add("张三");
arrayList.add("李四");//双列集合
HashMap hashMap = new HashMap();
hashMap.put("1","a");
hashMap.put("2","b");

Collection接口

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

        Set中的数据对象不可以重复

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

List接口及实现类

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

        ArrayList:数组列表,数据采用数组方式存储

        LinkedList:链表

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

ArrayLIst实现了长度可变的数组,在内存中分配连续的空间。

 

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

 

ArrayList接口常用的方法

add(E element):添加单个元素

remove(int index):删除指定元素

contains:查找元素是否存在

size:获取元素个数

isEmpty:判断集合是否为空

clear:清空

import java.util.ArrayList;public class Demo1 {public static void main(String[] args) {//单列集合ArrayList arrayList = new ArrayList();//使用add添加元素arrayList.add("张三");arrayList.add(666);arrayList.add(false);System.out.println(arrayList);//remove删除指定元素arrayList.remove(0);//删除第一个元素System.out.println(arrayList);//contains查找某个元素是否存在System.out.println(arrayList.contains(false));//查找false是否在集合之中//size获取集合长度System.out.println(arrayList.size());//isEmpty判断集合是否为空System.out.println(arrayList.isEmpty());//clear 清空集合arrayList.clear();System.out.println(arrayList);}
}

 List接口集合迭代

        1、for循环遍历

        2、增强for循环遍历

        3、迭代器遍历(Iterator)

import java.util.ArrayList;
import java.util.Iterator;public class Demo1 {public static void main(String[] args) {ArrayList<String> arrayList = new ArrayList();arrayList.add("a");arrayList.add("b");arrayList.add("c");arrayList.add("d");arrayList.add("e");//使用for循环for (int i = 0; i < arrayList.size(); i++) {System.out.print(arrayList.get(i) + " ");}//使用增强for循环for (String s:arrayList){System.out.print(s + " ");}//使用迭代器Iterator<String> it = arrayList.iterator();while (it.hasNext()){String s = it.next();if ("a".equals(s)){it.remove();}System.out.println(s);}System.out.println(arrayList);}
}

Set接口

Set接口继承了Collection接口

        Set中所存储的元素时不重复的,但是是无需的,Set中的元素是没有索引的

Set接口有两个实现类

        HashSet:HashSet中的元素不能重复

        TreeSet:可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口

Set接口集合迭代

遍历方式:

        增强for循环

        迭代器遍历

Map接口

HashMap

        HashMap中的key值不能重复,排列顺序是不固定的,可以存储一个null的键

TreeMap

        TreeMap中所有的元素都保持者某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。

HashTable

        实现了同步;不能存储null的键。

Map集合遍历

方式1:根据键找值
获取所有键的集合
  遍历键的集合,获取到每一个键
 根据键找值
方式2:根据键值对对象找键和值
  获取所有键值对对象的集合
遍历键值对对象的集合,获取到每一个键值对对象
  根据键值对对象找键和值

TreeMap

  TreeMap
适用于按自然顺序或自定义顺序遍历键(key)。
TreeMap根据key值排序,key值需要实现Comparable接口,
重写compareTo方法。TreeMap根据compareTo的逻辑,对
key进行排序。
键是红黑树结构,可以保证键的排序和唯一性

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入PostgreSQL中的pg_global表空间

pg_global表空间的位置 在PG当中&#xff0c;一个实例(cluster)初始化完以后&#xff0c;你会看到有下边两个与表空间相关的目录生成&#xff1a; $PGDATA/base $PGDATA/global 我们再用元命令\db以及相关视图看看相应的表空间信息&#xff1a; postgres# \db …

Golang | Leetcode Golang题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; func isMatch(s string, p string) bool {m, n : len(s), len(p)matches : func(i, j int) bool {if i 0 {return false}if p[j-1] . {return true}return s[i-1] p[j-1]}f : make([][]bool, m 1)for i : 0; i < len(f); i {f[i] m…

重构智能防丢产品,苹果Find My技术引领市场发展

目前市场上最主要的防丢技术是蓝牙防丢和GPS防丢&#xff0c;蓝牙防丢是通过感应防丢器与绑定手机的距离来实现防丢的。一般防丢会默认设置一个最远安全距离&#xff0c;超过这个安全距离后&#xff0c;与手机蓝牙信号断开&#xff0c;触发防丢报警&#xff0c;用户根据防丢报警…

JS详解-手写Promise!!!

前言&#xff1a; 针对js的深入理解&#xff0c;作者学习并撰写以下文章&#xff0c;由于理解认知有限难免存在偏差&#xff0c;请大家指正&#xff01;所有定义来自mdn。 Promise介绍&#xff1a; 对象表示异步操作最终的完成&#xff08;或失败&#xff09;以及其结果值. 描…

设计模式 --5观察者模式

观察者模式 观察者模式的优缺点 优点 当一个对象改变的时候 需要同时改变其他对象的相关动作的时候 &#xff0c;而且它不知道有多少具体的对象需要改变 应该考虑使用观察者模式 。观察者模式的工作就是解除耦合 让耦合双方都依赖与抽象 而不是具体 是的各自改变都不会影响另…

Leetcode_2两数相加

文章目录 前言一、两数相加1.1 问题描述1.2 解法一&#xff1a;分别将链表转为数字&#xff0c;然后相加1.3 代码实现1.4 解法二&#xff1a;分别将对应位置数字相加1.5 代码实现 二、使用步骤1.引入库2.读入数据 前言 链表是一种物理内存非连续存储&#xff0c;非顺序的线性数…

golang 和java对比的优劣势

Golang&#xff08;或称Go&#xff09;和Java都是非常流行的编程语言&#xff0c;被广泛应用于各种领域的软件开发。尽管它们都是高级编程语言&#xff0c;但它们具有许多不同的特性和适用场景。本文将重点比较Golang和Java&#xff0c;探讨它们的优势和劣势。 性能方面&#…

Django之关系模型的序列化

一、关系模型的序列化-多查1 1.1、模型准备 from django.db import models# Create your models here. class Classes(models.Model):name = models.CharField(max_length=20, verbose_name=班级)class Student(models.Model):SEX_CHOICES = ((1,男)), (2, 女)name = models.C…

Python:百度AI开放平台——OCR图像文字识别应用

一、注册百度AI开放平台 使用百度AI服务的步骤为&#xff1a; 注册&#xff1a;注册成为百度AI开放平台开发者&#xff1b;创建AI应用&#xff1a;在百度API开放平台上创建相关类型的的AI应用&#xff0c;获得AppID、API Key和Secret Key&#xff1b;调用API&#xff1a;调用…

Mac删除软件,动一动手指,几秒就彻底删除 mac删除软件删不掉的解决方法 mac删除软件后怎么删除软件数据

当你入职新公司&#xff0c;接手前任员工使用的Mac电脑时&#xff0c;很可能会遇到一个非常普遍的问题&#xff1a;电脑中装有大量你不需要的软件。这些软件不仅占用宝贵的硬盘空间&#xff0c;还可能影响电脑的运行速度和效率。为了获得一个干净、清爽的使用体验&#xff0c;删…

Spark-Scala语言实战(12)

在之前的文章中&#xff0c;我们学习了如何在spark中使用键值对中的join,rightOuterJoin,leftOuterJoin三种方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢…

小林coding图解计算机网络|基础篇01|TCP/IP网络模型有哪几层?

小林coding网站通道&#xff1a;入口 本篇文章摘抄应付面试的重点内容&#xff0c;详细内容还请移步&#xff1a; 文章目录 应用层(Application Layer)传输层(Transport Layer)TCP段(TCP Segment) 网络层(Internet Layer)IP协议的寻址能力IP协议的路由能力 数据链路层(Link Lay…

Redis 主从复制,哨兵模式,集群

目录 主从复制 主从复制 作用 缺陷 主从复制流程 实现Redis主从复制 哨兵模式 主从复制切换的缺点 哨兵的核心功能 哨兵模式原理 哨兵模式的作用 哨兵结构组成 故障转移机制 主节点的选举 实现哨兵模式 集群(Cluster) redis群集有三种模式&#xff0c;主从复制…

【Linux】网络基础常识{OSI七层模型/ TCP/IP / 端口号 /各种协议}

文章目录 1.网络常识1.0DHCP协议1. 1IP地址/MAC地址/ARP协议是什么&#xff1f;IP/MACARP&#xff1a;IP ⇒ MAC 1.2手机连接wifi的原理 SSID与BSSID手机连接wifiSSID与BSSID 1.3手机如何通过“数据/流量”上网&#xff1f;1.4电脑连接wifi的原理&#xff1f;电脑通过热点上网…

SystemHelper已停止运行解决方案

当手机一开机就提醒 SystemHelper已停止运行&#xff0c;但手机也能正常使用就是部分软件打不开怎么办&#xff1f; 有此提示说明你的系统已经 Root 了并且你安装了某些不知名的软件或者 Magisk 模块导致系统环境发生了不可逆的修改&#xff0c;有 Magisk 建议还原官方 Boot 启…

快速入门Linux,Linux岗位有哪些?(一)

文章目录 Linux与Linux运维操作系统&#xff1f;操作系统图解 认识LinuxLinux受欢迎的原因什么是Linux运维Linux运维岗位Linux运维岗位职责Linux运维架构师岗位职责Linux运维职业发展路线计算机硬件分类运维人员的三大核心职责 运维人员工作&#xff08;服务器&#xff09;什么…

3.6k star, 免费开源跨平台的数据库管理工具 dbgate

3.6k star, 免费开源跨平台的数据库管理工具 dbgate 分类 开源分享 项目名: dbgate -- 免费开源跨平台的数据库管理工具 Github 开源地址&#xff1a; GitHub - dbgate/dbgate: Database manager for MySQL, PostgreSQL, SQL Server, MongoDB, SQLite and others. Runs under…

CVE-2021-30517:Type confusion bug in LoadSuperIC

前言 这个漏洞是一个比较老的洞&#xff0c;之所以分析这个漏洞&#xff0c;只要是想再学习一下 ICs 相关的知识。并该漏洞的利用是利用与 String/Function 之间的混淆&#xff0c;比较有意思。 环境搭建 sudo apt install python git checkout 7d5e5f6c62c3f38acee12dc4114…

vue快速入门(五)v-show与v-if

注释很详细&#xff0c;直接上代码 上一篇 新增内容 v-if与v-show底层的区别v-if与v-show的效果 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…

【OpenCV】图像像素的遍历

1 前言 介绍两种遍历像素的方法&#xff08;非指针、指针&#xff09;。注意&#xff1a;.at() .ptr()的作用、用法。相关API&#xff1a; Mat对象.ptr() Mat对象.at() 2 代码及内容 #include "iostream" #include "opencv2/opencv.hpp"using namespac…