JAVA集合(容器)

JAVA集合(容器)概念:

当我们需要存储一组一样(数据类型相同)的数据时需要用容器进行存储,数组就是这样一种容器,但是数组长度一经定义就不能再改变。

在实际开发中我们需要用到可以动态增长的容器,数组就不满足条件。

而我们需要对数据的保存的逻辑可能各种各样,于是就有了各种各样的数据结
构。 Java中对于各种数据结构的实现,就是我们用到的集合(容器)

集合API:

集合体系概述:java集合框架由很多接口、抽象类、具体类组成,都位于java.util包中。

Collection接口(单列集合):

Collection是单列集合,定义了存储一组对象的方法,其子接口Set与List分别定义了存储方法。

List接口中元素有顺序(添加顺序),且可以重复元素;

Set接口中元素不可以重复

List接口及实现类:

List接口继承了Collection接口,其下有三种具体实现的类

Arraylist:采用数组存储;

实现了长度可变的数组,在内存空间中连续分配。遍历元素和随机访问元素的效率较高。

            熟悉ArrayList常用方法;

Linkedlist:采用链表存储;

链表存储方式,插入、删除元素时效率较高。

            熟悉LinkedList常用方法;

Vector:采用数组存储,添加了同步锁,线程是安全的

List接口集合迭代:

for循环遍历;

增强·for循环遍历;

迭代器遍历(Iterator)

Set接口:

继承了Collection接口,Set中存储的元素是不重复的,而且是无序的,Set中的元素是没有索引的

Set接口有两个具体的实现类:

HashSet:无序性(不可以通过索引来访问元素);

                 HashSet类中元素不能重复(唯一性);

                 基于哈希表实现;

                 可以存储最多一个为null的元素;

                 非线程安全,需要使用线程安全的方式进行访问;

                 元素添加删除查找的时间复杂度为O(1)

TreeSet:元素可以按照指定顺序排序;

               存储的对象必须实现Comparable接口

package com.ffyc.javacollection.day8.set;

import java.util.TreeSet;

public class TreesetDemo1 {
    public static void main(String[] args) {
        /*
        TreeSet
            不能存储重复元素
            可以根据值进行排序,底层运用了树型结构,树结构本身就是有序的
           向树形结构中添加元素时,如何判断元素大小以及元素是否重复
             向TreeSet中添加的元素类型必须实现CompareTo接口,重写compareTo()
              每次添加元素时,调用compareTo()进行元素大小判断(小于放左边,等于就是重复,覆盖元素,大于放右边)

         */
        TreeSet<Integer> treeSet=new TreeSet();
        treeSet.add(66);
        treeSet.add(55);
        treeSet.contains(33);
        treeSet.add(2);
        treeSet.add(6);
        treeSet.add(5);
        treeSet.add(4);
        treeSet.add(3);
        treeSet.isEmpty();
        treeSet.iterator();

        for (Integer b:treeSet){
            System.out.println(b);
        }
    }
}

运行结果:

Set接口集合迭代:

(1)增强for循环;

(2)迭代器循环(Iterator)

Map接口(双列集合):

Map接口概述:

将键映射到值的对象,

一个映射不能包含重复的键,

每个键最多只能映射到一个值        

熟悉Map接口常用方法;

HashMap:

元素的key值是不能重复的,元素排列顺序是无序的,可以存储一个为null的

TreeMap:
TreeMap根据key值排序,key值需要实现Comparable接口, 重写compareTo方法。TreeMap根据compareTo的逻辑,对 key进行排序。
键是红黑树结构,可以保证键的排序和唯一性

如果需要得到一个有序的Map,就是用TreeMap,key所在类必须实现Comparable接口

HashTable:

实现了同步(函数同步),即它是线程安全的;

其中的key和value都不可以为null;

HashTable中的映射不是有序的

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

Collections类:

Collections是集合类的工具类,与数组的工具类Arrays相似

其提供了一系列静态方法,不需要实例化对象就可以直接调用

用于操作集合

addAl l(Col lection<? super T> c, T... elements);
binarySearch(List<? extends Comparable<? super T>> l ist, T key)
sort(List<T> l ist)默认排序
sort(List<T> l ist, Comparator<? super T> c)自定义排序
swap(List<?> l ist, int i, int j)交换指定位置元素
copy(List<? super T> dest, List<? extends T> src) ; 注意 dest size 需大于等于 src.size
fi l l(List<? super T> l ist, T obj)
max(Col lection<? extends T> col l)
min(Col lection<? extends T> col l)
replaceAl l(List<T> l ist, T oldVal, T newVal)
reverse(List<?> l ist)
shuffle(List<?> l ist) 随机排序
copy(dest,src) 集合复制

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

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

相关文章

【操作系统】CentOS7入门级安装

下载镜像 CentOS镜像下载Download (centos.org) 我们选择第一个 X86_64 CentOS Mirrors List 版本描述X86_X64带64位的32位扩展版(一般安装这个)ARM64 (aarch64)嵌入式。适用于微端(树莓派、机械臂、机械中控)IBM Power (ppc64le)专用于IBM POWER服务器 选择一个合适的链接 …

2024年32款数据分析工具分五大类总览

数据分析工具在现代商业和科学中扮演着不可或缺的角色&#xff0c;为组织和个人提供了深入洞察和明智决策的能力。这些工具不仅能够处理大规模的数据集&#xff0c;还能通过强大的分析和可视化功能揭示隐藏在数据背后的模式和趋势。数据分析工具软件主要可以划分为以下五个类别…

虚拟机VMware的下载、注册码(Mac与Windows)

1. 虚拟机的下载 windows 版的虚拟机叫 VMware Workstation mac版的虚拟机叫 VMware Fusion 官网下载地址: window 下载地址 https://www.vmware.com/content/vmware/vmware-published-sites/us/products/workstation-pro.html mac 下载地址 https://www.vmware.com/prod…

纯小白蓝桥杯备赛笔记--DAY10(字符串)

文章目录 KMP字符串哈希算法简介&#xff1a;斤斤计较的小z--2047字符串hash Manacher回文串的性质算法简介最长回文子串 字典树基础朴素字符串查找步骤前缀判定--1204 01tire算法简介&#xff1a;例题1&#xff1a;例题2&#xff1a; KMP字符串哈希 算法简介&#xff1a; 真前…

Supervision:机器视觉的技术平权

Roboflow Supervision是面向非机器视觉专家的可重复使用的计算机视觉工具。 无论你是需要从硬盘加载数据集、在图像或视频上绘制检测&#xff0c;或者计算一个区域中有多少检测目标&#xff0c;都可以依靠Supervison&#xff01; NSDT工具推荐&#xff1a; Three.js AI纹理开发…

Lambda 表达式简单演化(原始的方法调用,一步步简化成 lambda 表达式的过程)

目录 Lambda 表达式简单演化原始的方法调用&#xff0c;一步步简化成 lambda 表达式的过程原始接口方法没有参数的演示—示例 1具体代码 原始接口方法携带参数的演示—示例 2具体方法 Lambda 表达式简单演化 函数式接口的定义&#xff1a; 1、任何接口&#xff0c;如果只包含唯…

Springboot 测试模块 + 注入bean失败

1.添加依赖 <dependencies><!-- ... 其他依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> </depende…

Chatgpt掘金之旅—有爱AI商业实战篇|在线辅导业务|(十一)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在线辅导业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着…

【LeetCode】修炼之路-0002-Add Two Numbers(两数相加)【python】【中等】

题目 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two…

使用MobaXterm/winTerm之类的工具连接虚拟机时报错Permission denied或者Access denied的解决办法

一、虚拟机设置&#xff1a; 1.将点击【编辑】---> 【虚拟网络编辑器】 2.添加VMnet6 1&#xff09;点击【DHCP设置】--->添加网络--->选中【仅主机模式】【将主机虚拟适配器连接到此网络】 2&#xff09;子网ip写“192.168.66.0” 3&#xff09;点击右下角【应用…

Tomcat项目部署spring mvc项目,压测出现的问题

Tomcat项目部署spring mvc项目&#xff0c;压测出现的问题 项目部署&#xff1a;docker部署时候设置的内存是80G&#xff0c;JVM堆内存的初始堆和最大堆设置的内存都是64G 1、压测的时候&#xff0c;并发1000&#xff0c;循环1次 日志显示&#xff1a;堆内存溢出 2、排查出…

2022年蓝桥杯省赛——ASC

目录 题目链接&#xff1a;1.ASC - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码实现 题目链接&#xff1a;1.ASC - 蓝桥云课 (lanqiao.cn) 题目描述 这是一道填空题。 已知大写字母A的ASCLL码为65&#xff0c;请问大写字母L的ASCLL码是多少。 对&#xff0c;呃&#xff0c…

创新入门|营销中的视频内容:不可或缺的策略

视频在营销中日益重要。你是否也发现,视频内容最近似乎无处不在?它占据着社交媒体的推文、网站首页,甚至电子邮件中的位置。事实上,并不是你一个人有这样的感受。在过去十年中,视频作为一种营销手段日益成熟和强大。这是因为,人类天生就是视觉动物。我们大脑处理视觉信息的速度…

II2C协议+Oled屏幕ssd1306

IIC协议 IIC协议概述 IIC全称Inter-Integrated Circuit (集成电路总线)是由PHILIPS公司在80年代开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。IIC属于半双工同步通信方式。 特点 简单性和有效性 由于接口直接在组件之上&#xff0c;因此IIC总线占用的空间非…

公开课学习——JVM虚拟机面试核心点与性能优化点

文章目录 jdk的体系结构图Java语言的跨平台的特性&#xff0c;怎么实现的&#xff1f;jvm内部组成呢&#xff1f;pc的值怎么变得&#xff1f;main方法的栈帧有一点点区别&#xff0c;Math()是new出来的&#xff0c;放在堆区&#xff0c;这个堆区的math和我们栈帧中的局部变量表…

B端:权限管理,远非增删改查审,一文告诉你细节。

增删改查审是B系统权限的常用功能&#xff0c;但绝非是全部功能&#xff0c;权限管理从属于用户管理体系&#xff0c;本文就详细分享权限管理都有啥&#xff0c;该如何设计。 一、什么是权限管理 B端的权限管理是指针对企业内部员工或合作伙伴的权限控制和管理。这包括对员工…

HarmonyOS 应用开发-使用colorPicker实现背景跟随主题颜色转换

介绍 本示例介绍使用image库以及effectKit库中的colorPicker对目标图片进行取色&#xff0c;将获取的颜色作为背景渐变色&#xff0c;通过swiper组件对图片进行轮播&#xff0c; 效果图预览 使用说明 直接进入页面&#xff0c;对图片进行左右滑动&#xff0c;或者等待几秒&a…

YOLOv5标签值含义根据标签将检测框色块替换(马赛克)

以一个检测人脸的图片为例&#xff1a; 检测后生成的标签txt如下&#xff0c; 此时&#xff0c;如何根据标签值将检测到的人脸同色块替换呢&#xff1f; 关键是获取检测框的左上角坐标和右下角坐标。 img Image.open(D:/PythonWokspace/JINX/datasets_transform/dataset/im…

MySQL-7.mysql约束

约束用于确保数据库中的数据满足特定的商业规则。 MySQL约束包含五种&#xff1a;not null、unique、primary key、foreign key、check 7.1 primary key 主键 字段名 字段类型 primary key 用于唯一的标识表的行数据&#xff0c;当定义主键约束后&#xff0c;该列不能重复。 pr…

赛氪网成为中国翻译协会理事单位

环球赛乐(北京)科技有限公司&#xff08;赛氪网&#xff09;正式成为中国翻译协会理事单位&#xff01; 中国翻译协会&#xff0c;简称TAC&#xff0c;自1982年成立以来&#xff0c;始终致力于推动全国翻译事业的发展。作为一个由翻译工作相关的机关、企事业单位、社会团体及个…