Java容器介绍及其操作方法

news2024/11/18 13:29:55

图片无效


一、List

ArrayList,LinkedList

特有的函数

<class T>   get(int index)

获取下标为index的元素

<class T>   set(int index, <class T> element)

改变某个元素

void           add(int index, <class T> element)

在下标为index处插入元素,注意这是list特有的,因为collections中式有set这种数据结构,而set是无序的,可能是非线性的(如TreeSet),所以没有有这种方法
int               indexOf(Object)返回Object的第一个下标,找不到返回-1,类似有lastIndexOf()
Object        clone()返回的是Object 类型,一般情况下需要强制类型转换
List<T>      subList(int firstIndex, int lastIndex)返回该列表的一个视图,子字符串

void            sort(Comparator<T> c)

列表排序,需给出comparator

LinkedList特有的函数

void addFirst(<class T> e)

在链表头添加一个元素

void addLast(<class T> e)

在链表尾部添加一个元素

<class T>  getFirst()

取得第一个元素

<class T>  getLast()

取得最后一个元素

<class T>  removeFirst()

移去开头一个元素

<class T>  removeLast()

移去最后一个元素

可以用LinkedList很轻易的实现stack 和 queue

class stack{

private LinkedList list = new LinkedList();
public void push(Object v) { list.addFirst(v); }
public Object top() { return list.getFirst(); }
public Object pop() { return list.removeFirst(); }

}

class Queue{

private LinkedList list = new LinkedList();
public void put(Object v) { list.addFirst(v); }
public Object get() { return list.removeLast(); }
public boolean isEmpty() { return list.isEmpty(); }

}

二、Map

C++的map 可见C++ map、unordered_map操作方法

1. HashMap

 hashmap的底层原理:哈希数组+链表Java集合之一—HashMap_woshimaxiao1的博客-CSDN博客

c++中 unordered_map底层是由开散列实现的,相当于Java中的HashMap。

2. LinkedHashMap

底层原理:哈希数组+链表+双向链表表示插入顺序

Map 综述(二):彻头彻尾理解 LinkedHashMap_linkedhashmap listorderedmap_书呆子Rico的博客-CSDN博客

3.TreeMap

基于红黑树实现的map

c++中map的底层是由红黑树实现的,相当于Java中的TreeMap。

4. HashMap、TreeMap、LinkedHashMap的函数

V  get(K key)

根据键key返回value
 V put(K key, V value)插入一个键值对, 如果key存在的话,相当于修改该key的键值对,并返回旧的value
void putAll(Map<K,  V> m)将Map类型的m中的所有元素加入到目标map中
void clear()清空该map的所有entry
boolean containsKey(Object key)查看map中是否存在包含该key的entry
boolean containsValue(Object value)查看map中是否存在包含该value的entry
V remove(Object key)删除该key对应的entry并返回对应的值value
boolean remove(Object key, Object value) 当且仅当当前的键对应的是值value时,才把该entry删除,并返回true,否则返回false
 V replace(K key, V value)将<key,old_value>替换成<key, new_value>, 本质上跟put是一样的。
boolean isEmpty()是否为空
int size()返回数组的大小
Set<K> keySet()返回键的Set,因为键是不能重复的,所以用Set来存储
Collection<V> values()返回值的集合,因为值是有可能重复的,所以返回Collection

V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)

找到某个key的entry, 然后将value 和 old_value进行一个运算,该运算有BiFunction实现, 该函数中最后一个V是前面两个V进行运算后得到的结果,即value和old_value运算后的击鼓哦。

V oldValue = get(key);
        V newValue = (oldValue == null) ? value :
                   remappingFunction.apply(oldValue, value);
        if(newValue == null) {
            remove(key);
        } else {
            put(key, newValue);
        }
        return newValue;

三、Set

1. TreeSet

基于Treemap实现

2. HashSet

HashSet 通常是使用 Set 的第一选择

hashset介绍

https://www.jianshu.com/p/f6f514e3def8

hashset是基于hashmap实现的

3. LinkedHashSet

LinkedHashSet是基于LinkedHashMap实现

4. SortedSet (抽象类)

TreeSet 是其唯一的实现,TreeSet是一个有序的集合,基于TreeMap实现,支持两种排序方式:自然排序和定制排序

所以Treeset有以下功能:

Object first()返回容器中的第一个元素。
Object last()返回容器中的最末一个元素
SortedSet subSet(fromElement, toElement)生成此 Set 的子集,范围
从 fromElement(包含)到 toElement(不包含)
SortedSet headSet(toElement)生成此 Set 的子集,由小于 toElement 的
元素组成
SortedSet tailSet(fromElement)生成此 Set 的子集,由大于或等于
fromElement 的元素组成
Comparator comparator()返回当前 Set 使用的 Comparator,或者返回
null,表示以自然方式排序。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

API信息

API 接口渗透测试

Neo4j的简单使用

1、创建节点 CREATE (:Person {name: Alice, age: 25, city: London}) CREATE (:Person {name: Bob, age: 30, city: New York}) CREATE (:Person {name: Charlie, age: 35, city: Paris})CREATE (:Interest {name: Music}) CREATE (:Interest {name: Sports}) CREATE (:Inter…

Redis实战案例9-封装Redis工具类

1. 封装Redis工具类 方法一和三主要解决缓存穿透的问题&#xff1b; 方法二和四主要解决缓存击穿的问题&#xff1b; 2. 方法一和三 缓存穿透的封装&#xff1b; private final StringRedisTemplate stringRedisTemplate; public CacheClient(StringRedisTemplate stringRedisT…

炫技亮点 Spring Websocket idle check原理

文章目录 原理配置附件Java_websocket空闲检测原理 Spring Websocket 是基于 WebSocket 协议的实现&#xff0c;它提供了一种在客户端和服务器之间实时双向通信的方式。其中&#xff0c;idle check&#xff08;空闲检查&#xff09;是一种机制&#xff0c;用于检测 WebSocket 连…

新项目,不妨采用这种架构分层,很优雅!

大家好&#xff0c;我是飘渺。今天继续更新DDD&微服务的系列文章。 在专栏开篇提到过DDD&#xff08;Domain-Driven Design&#xff0c;领域驱动设计&#xff09;学习起来较为复杂&#xff0c;一方面因为其自身涉及的概念颇多&#xff0c;另一方面&#xff0c;我们往往缺乏…

CF449D Jzzhu and Numbers 题解

题意 给定 A 1 . . . . A n A_1....A_n A1​....An​&#xff0c;选任意个数使得它们异或和为 0 0 0&#xff0c;求方案数。 思路 很朴素的想法是枚举每个数&#xff0c;然后进行 0-1 背包方案数统计&#xff0c;时间复杂度 O ( n n ) O(n \times n) O(nn)。 而根据前面几…

linux——解压和压缩

目录 1.压缩格式 2. tar命令 3.tar命令压缩 4. tar解压 5. zip命令压缩文件 6. unzip 命令解压 7. 总结 1.压缩格式 2. tar命令 3.tar命令压缩 4. tar解压 5. zip命令压缩文件 6. unzip 命令解压 7. 总结

DragGAN windows 部署逼坑指南

可参看B站视频&#xff1a;【DragGAN开源】DragGAN win11 部署逼坑指南_哔哩哔哩_bilibili 报错信息如下&#xff1a; Setting up PyTorch plugin "bias_act_plugin"... Failed! ninja is required to load c extensions 环境配置&#xff1a; cuda:12.1visual …

C++vector动态容器类

1、std::vector::push_back&#xff08;尾差&#xff09; 1.1、std::vector::operator[] 意思为&#xff1b; 访问元素 返回对vector容器中位置n的元素的引用。 void test_vector2() {vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);/…

这个元宇宙平台真是拼了!新上线十套模板,帮您打造虚拟展览

导语&#xff1a; 随着数字技术的不断发展&#xff0c;线上虚拟展览正成为越来越多企业和组织的营销利器。在众多的虚拟展厅平台中&#xff0c;蛙色3DVR展厅凭借其独特的优势和特点&#xff0c;成为行业中备受关注的创新解决方案。 第一部分&#xff1a;展厅的优势和特点 1.便…

多元分类预测 | Matlab蛇群算法(SO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SO-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab蛇群算法(SO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SO-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,…

三项认可,数据库透明加密获“年度优秀密码产品奖”

6月28日&#xff0c;杭州市商用密码应用协会第一届第三次会员大会成功召开&#xff0c;大会审议了2022年度工作总结及2023年度活动计划&#xff0c;发布《2023商用密码产业链总览》。为扎实推进杭州市商用密码、信创在各领域的应用推广&#xff0c;本次大会对在密码技术开发与创…

ATFX国际:原油收盘价连续5个交易日低于70美元

ATFX国际&#xff1a;大宗商品的价格是全球经济的晴雨表&#xff0c;当价格进入历史高位区间时&#xff0c;意味着商品需求旺盛&#xff0c;全球经济大概率处于繁荣期&#xff1b;当价格由历史高位向历史低位区间运行时&#xff0c;意味着全球经济大概率正从繁荣期向衰退期转变…

JKD动态代理

在Java的动态代理机制中&#xff0c;有两个重要的类和接口&#xff0c;一个是InvoInvocationHandler&#xff08;接口&#xff09;、Proxy&#xff08;类&#xff09;&#xff0c;这一个类和接口是我们动态代理所必须用到的。 InvocationHandler接口&#xff1a; 每个动态代理…

学习系统编程No.27【深入信号处理】

引言&#xff1a; 北京时间&#xff1a;2023/6/27/21:43&#xff0c;刚刚更新完这个星期的第一篇博客&#xff0c;现在刚好趁热打铁&#xff0c;看看写到11点左右&#xff0c;该篇博客能完成多少&#xff0c;并且今天和我预想的一样&#xff0c;通过早睡&#xff0c;成功在7点…

容器访问外部网络之ip_forward数据包转发

文章目录 1 问题解决1.1 问题1.2 原因1.3 解决临时打开&#xff1a;永久打开&#xff1a; 2 net.ipv4.ip_forward内核参数通俗解释3 在Linux中验证并实践net.ipv4.ip_forward设置 IP 地址设置路由信息打开 IP Forward 功能关闭主机 R 的防火墙和 SeLinux验证容器技术其它 4 常用…

< vue + ElementUi 组件封装:实现弹窗展示富文本数据,允许全文搜索高亮显示搜索内容 >

实现弹窗展示富文本数据&#xff0c;允许全文搜索高亮显示搜索内容 &#x1f449; 前言&#x1f449; 一、效果演示&#x1f449; 二、实现思路&#x1f449; 三、实现案例&#x1f44d; 卷王必胜&#xff01;往期内容 &#x1f4a8; &#x1f449; 前言 在 Vue elementUi 开…

私域流量怎么运营?

最近几年&#xff0c;随着微信社群营销的兴起&#xff0c;互联网上出现了一种火爆的变现模式&#xff0c;即将流量引入微信个人号或社群&#xff0c;并通过活动、促销和私聊等方式进行转化&#xff0c;从而为企业或个人带来变现&#xff0c;这就是私域流量变现。 实际上&#x…

ARMv8 - 安全机制 - 异常等级

简介 ARMv8架构处理器有一套异常等级&#xff08;Exception level&#xff09;机制&#xff0c;分成4个等级&#xff08;EL0 ~ EL3&#xff09;。处理器运行时会处于其中的某个等级并且可以进行等级切换。 资源差异 每个异常等级都拥有一些自己版本的特殊寄存器&#xff0c;…

基于大数据技术对基金分析-python

提示&#xff1a;本文为个人原创&#xff0c;仅供技术探讨与交流&#xff0c;对实际投资并不造成建议。 基于大数据技术对基金分析-python 前言一、数据获取&#xff1a;python爬虫1).从天天基金数据接口获取数据2).爬虫前期准备3).爬虫具体实现 二、数据清洗及计算指标1.过滤数…