【JAVA基础】容器类

java中的容器(集合),HashMap底层原理,ArrayList、LinkedList、Vector区别,hashMap加载因子0.75原因 集合主要分为Collection和Map两大接口;Collection集合的子接口有List、Set;List集合的实现类有ArrayList底层是数组、LinkedList底层是双向非循环列表、Vector;Set集合的实现类有HashSet、TreeSet;Map集合的实现类有HashMap、TreeMap、HashTable;(补充:HashTable与HashMap类似,线程安全,子接口有Properties接口,线程安全)1.HashMap底层原理? 阅读详情


前言

Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示是Collection和Map梳理讲解


一、List

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1. ArrayList

原理:数组,底层使用Object数组
扩容机制:Arraylist的默认初始值大小为10,默认扩容大小为1.5倍
优点:查询速度快,时间复杂度O(1)
缺点:增删速度慢,O(n)
线程不安全

2. LinkList

原理:底层是双向链表
优点:查询速度快,时间复杂度O(n)
缺点:增删速度慢,O(1)
线程不安全

3. Vector

底层使用sychronize关键字保证,扩容是原来的2倍

常见面试题:
1、是否保证线程安全?
2、插入和删除是否受元素位置的影响
3、是否支持快速随机访问?
4、内存空间占用?
5、ArrayList 和 Vector 的区别是什么?

二、Set

Set集合本身只定义有不允许重复的存储。Set接口完整的继承了Collection接口,也就是说Set集合几乎与Collection的操作是对等的。

1.HashSet

(1)打开源代码之后发现整个HashSet类里面存在有一个HashMap,但是很明显,没使用这个Map的Value,只使用了Key(HashMap的主要特点是key不能重复);
(2)在HashSet类执行add()方法的时候发现是利用了Map接口中的put()实现的;

2.LinkHashSet

如果这个时候需要进行连续的保存(FIFO),就可以使用另外一个子类。它之所以可以进行顺序保存,是因为在进行存储的时候采用的是链表形式完成的

3.TreeSet

(1) 里面存放的是TreeMap,TreeMap的特点在于所有的key都是可以排序的,排序的依据是Comparable(往往会忽略掉Comparator);
(2) 在TreeMap之中对于大小的关系判断强制使用了Comparable接口中的compareTo()完成。

三、Map

在这里插入图片描述

1.hashMap

1)数据结构
数组 + 链表/红黑树
2)扩容机制
加载因子*最大容量
JDK1.7扩容复制时候是头插法,1.8是尾插法
3)允许null值存在
4)put的过程
part1:特殊key值处理,key为null;
part2:计算table中目标bucket的下标【key的hash值,取余(length-1)】;
part3:指定目标bucket,遍历Entry结点链表,若找到key相同的Entry结点,则做替换;
part4:若未找到目标Entry结点,则新增一个Entry结点。

参考:
https://www.cnblogs.com/tianzhihensu/p/11972780.html#11-%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86


2、ConcurrentHashmap详解
1.8为例子
1、PUT过程
1、判断Node[]数组是否初始化,没有则进行初始化操作
2、通过hash定位数组的索引坐标,是否有Node节点,如果没有则使用CAS进行添加(链表的头节点),添加失败则进入下次循环。
3、检查到内部正在扩容,就帮助它一块扩容。【增删改才会扩容,读的会去查ForwardingNode】
4、如果f!=null,则使用synchronized锁住f元素(链表/红黑树的头元素)。如果是Node(链表结构)则执行链表的添加操作;如果是TreeNode(树型结构)则执行树添加操作。
5、判断链表长度已经达到临界值8(默认值),当节点超过这个值就需要把链表转换为树结构。
6、如果添加成功就调用addCount()方法统计size,并且检查是否需要扩容

2、get过程
1.计算hash值,定位到该table索引位置,如果是首节点符合就返回。
2.如果遇到扩容的时候,会调用标志正在扩容节点ForwardingNode的find方法,查找该节点,匹配就返回。
3.以上都不符合的话,就往下遍历节点,匹配就返回,否则最后就返回nul

3、ConcurrentHashMap的扩容
触发条件:
1)达到扩容状态
2)链表大于8,数组小于64
过程
检查到内部正在扩容,就帮助它一块扩容。【增删改才会扩容,读的会去查ForwardingNode】

4、在JDK1.7和JDK1.8中的区别
在JDK1.8主要设计上的改进有以下几点:

1、不采用segment而采用node,锁住node来实现减小锁粒度。
2、设计了MOVED状态 当resize的中过程中 线程2还在put数据,线程2会帮助resize。
3、使用3个CAS操作来确保node的一些操作的原子性,这种方式代替了锁。
4、sizeCtl的不同值来代表不同含义,起到了控制的作用。
采用synchronized而不是ReentrantLock

Java容器类 因为ArrayList和HashMap的Iterator都是上面所说的“fail-fast Iterator”,Iterator在获取下一个元素,删除元素时,都会比较expectedModCount和modCount,不一致就会抛出异常。所以当使用Iterator遍历元素(for-each遍历底层实现也是Iterator)时,需要删除元素,一定需要使用Iterator的remove()方法。 阅读详情

相关推荐

SPSS回归分析(线性:一元(简单)和多重;非线性logistic)

SPSS线性回归分析回归分析一、线性模型(针对连续因变量,线性关系)(一)简单线性回归(一元线性回归)1、绘制散点图2、建立简单(一元)线性回归模型3、建立模型后,检查预测结果(二)多重回归分析1、绘制矩阵分布散点图(论文专用你懂的)2、建立多重回归模型point 1:自变量加入方法:逐步(步进)法3、建立模型后,检查预测结果二、非线性模型(将非线性问题转换为线性问题)1、logistic分析的回归模型1.1 建立回归模型1.2 利用回归模型进行预测 根据之前的学习,通过评价实验得到了主观数据, 通过 描述

weixin_44394352的博客 5万+

Java基础——十二、容器

Map是 Java 中处理键值对数据的核心接口。选择合适的Map实现类是关键:如果需要快速查找,使用HashMap;如果需要顺序或排序,选择或TreeMap;在多线程环境中,使用。和 Collection定义了集合操作的基本能力和遍历方法。List进一步扩展了集合,支持有序、可重复的元素列表操作。和 AbstractList提供了集合的骨架实现,减少了开发者重复实现基础功能的工作量。是标识接口,表明支持高效随机访问。Cloneable和 Serializable。

qq_51936245的博客 3199

网络安全隔离技术解析:单向网闸与双向网闸的核心差异与应用场景

本文深入解析网络安全隔离技术中的单向网闸与双向网闸,详细比较两者的核心差异与应用场景。单向网闸通过物理隔离确保数据单向流动,适用于金融交易等高风险场景;双向网闸则支持严格安检的双向数据交互,常见于医疗、政务等领域。文章还提供了选型建议和技术发展趋势,帮助读者根据安全需求和业务场景选择最适合的网闸解决方案。

weixin_29323365的博客 527

Java容器底层原理——初窥

Java容器 Collection List ArrayList LinkedList Vector(线程安全) Set HashSet TreeSet LinkedHashSet Map HashMap LinkedHashMap Hashtable TreeMap 1、List List接口下的类存储元素,有序、可重复的。 1.1、ArrayList ArrayList内部实现是一个可变长度的数组,初始化创建的时候,这个数组长度为0,是一个空数组。在add第一个元素的时候,长

weixin_43664907的博客 649

Windows系统的Mamba环境配置详细教程(状态空间模型)

causal_conv1d也是安装mamba的依赖必须库。安装完成后,通过pip list可以查看到安装的库。Triton是安装mamba的依赖,需要先安装。上述工作准备好后,按下面步骤安装。直接根据离线文件安装即可。是自己的虚拟环境名字。

2301_77831163的博客 3674

深入解析SDC时钟约束:从create_clock到set_clock_groups的实战指南

本文深入解析SDC时钟约束,从create_clock到set_clock_groups的实战应用,帮助数字芯片设计工程师掌握时序约束的核心技巧。通过详细讲解时钟三要素(波形定义、不确定性和时钟关系)及实战案例,提升时钟约束的精准性和效率,避免常见设计陷阱。

weixin_29274337的博客 1077

Java容器类基础

Java容器类基础 Java实用类库提供了一套相当完善的容器类,基本类型为List,Set,Map,Queue。它们都有一些特性,例如Set对于每一个值都只保存一个对象,Map允许你将对象和对象关联起来。此外,Java容器类都可以自动调节尺寸。因此,与数组不同,你可以放置任意数量的对象到容器中而不用担心容器应该设置为多大。 Java容器类有4个接口,它们分别上面提到过的List,Set

奋起的Coder。。。 1428

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

算法大师! 436

java的容器类有哪些实现方式_Java基础--容器类

面试官:Java的容器类你有什么了解吗?-:额,没有用过....面试官:你肯定用过,但你没有注意过....-:应该是吧....你知道什么是容器类吗?Java容器可以说是增强程序员编程能力的基本工具,本文将与您一起理解容器类,看完之后你也许会恍然大悟,这原来就是容器类啊,一起避免面试时的尴尬!!!!1.容器的用途如果对象的数量与生命周期都是固定的,自然我们也就不需要很复杂的数据结构。我们可以通过创建...

weixin_39788131的博客 212

ADAS工作原理解析:如何通过智能技术提升驾驶安全

ADAS通过集成传感器、摄像头、雷达、SoC计算单元以及高效的数据融合技术,提供了一系列主动和被动安全功能,如自动刹车、车道保持、自适应巡航控制等。这些功能共同作用,不仅减少了交通事故的发生,还大幅提升了驾驶员的驾驶体验和安全性。随着技术的进步,ADAS的功能将越来越智能,最终迈向全自动驾驶的未来🚗💨。

weixin_43199439的博客 1148

1. 如何使用扣子工作流一键生成儿童绘本(可以发到小红书,微信公众号图文等)

本文介绍了使用扣子智能体一键生成儿童绘本的工作流。用户只需输入绘本主题,系统会自动生成Markdown格式内容,可直接发布到优快云、小红书等平台,还支持推送至微信公众号草稿箱。操作步骤包括:访问扣子网站导入工作流源代码,输入主题试运行,查看实时进度和最终输出结果。工作流编辑器会显示每个节点的执行状态和耗时,支持通过"查看日志"功能回溯历史运行记录。文末附有工作流源代码下载链接。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1245

《java程序设计基础》容器类

1.列表接口List 利用LinkedList类构造一个先见后出的堆栈 package yuan; import java.util.*; class StringStack{ private LinkedListld = new LinkedList();//创建LinkedList对象ld public void push(String name) { //入栈操作 ld.addFirst(name); //将name添加到链表的头 } public String pop() { //出栈操

qq_45724328的博客 219

RT-DETR改进策略【独家融合改进】| SPD-Conv+PPA 再次提升模型针对小目标的特征提取能力

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 1154

Java基础之-容器类概述

0.容器类Java中,按照保存对象的不同,分为Collection和Map两种。其中Collection是一个独立元素的序列,又按照一定的规则,分为一下三类: List 按照插入的顺序保存对象 Set 不能有重复元素 Queue 按照队列规则来确定对象产生的序列。 而Map,是一组成对的键值对 对象。1.添加元素在Java.util包中的Arrays和Collections有一些方法,可以在一个Co

_StriveG的专栏 1321

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java基础终章篇(10)容器类与集合操作

哈喽大家好吖,安排到这里该讲述Java中非常重要的容器类和集合操作嘞,Java基础的学习很快接近了尾声,往后博主将继续学习JavaEE,MySQL以及spring的相关内容,本文将以凝练的语言与方式将容器类和集合操作总结在一起,奉上正文~

2301_81073317的博客 1345

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java基础:Collection容器类

容器是存储对象的数据结构的集合。容器框架中定义的所有接口和类都存储在java.util包中。从容器的当前元素获取其后续元素进行访问的过程称为迭代,迭代也称为遍历。List的对象用于存储一个由元素构成的线性表;Set的对象是存储一组不重复的元素集合;Map的对象保持了键到值的映射。List是一种包含有序元素的线性表,其中的元素必须按顺序存放,且可重复,也可以是空值null。实现List接口的类主要有链表类LinkedList和数组列表类ArrayList。

~ 454

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java 基础回顾-5:容器类

容器数组的效率比容器高,但是我们应该“优先选择容器而不是数组”,只有在已证明性能成为问题时,才应该将程序重构为使用数组

你好,开发者 821

【Java基础整理】—— List、Queue容器类

前言 本文整理了List、Queue的相关知识,介绍相关的实现类,附有相关的源码以及自己的一点理解。如有不对,欢迎指正。 List 对于List,常见的对比有Vector LinkedList、ArrayList、Vector的区别 ArrayList 采用数组的形式,使用一段连续的线性存储空间,更适合随机查找和遍历,不适合插入和删除。 代码实现及构造方法 /** * The array buffer into which the elements of the ArrayList are st.

weixin_45441062的博客 781

JAVA基础入门学习:常用的容器类

JAVA的容器—List,Map,Set Collection是最基本的集合接口,有两个子接口List和Set的,List一定是有序的,因此包含一些指定索引位置的方法;Set不一定有序,Set接口不包含需要索引进行操作的方法,当然其实现类可以自己增加。 Collection 接口 ├List 接口 │├LinkedList 类 │├ArrayList 类 │└Vector 类 │ └Stack 类...

weixin_43156609的博客 251

泛型容器类-记事本(Java基础)

Java-基础

weixin_69143897的博客 373

Java SE 基础 (三、容器类)

        本章讲解Java中的容器类一、主要结构图二、明细结构图

451

java基础复习(六):容器类库

文章目录理解容器的本质容器与数组容器的最佳实践思考:set、list、map接口ArrayList和linkedList共同点思考细节对比选择双向链表还是单链表选择链表还是数组随机访问复杂度对比hashMaphashCode()与hash()哈希函数的作用hashCode的作用分析hashCode的实现(31)扩容原理jdk7死循环的产生对比1.7与1.8的hashMap实现阈值问题什么是loadfactor为啥树化阈值为8,而恢复为6红黑树性质解决哈希冲突的办法哈希函数的其他实现put与get方法的实现简

qq_44793993的博客 1085

java基础菜鸟教程容器类,重磅

例如,在 Spring 框架中,LocalSessionFactoryBean 是 FactoryBean 的一个实现,它用于获取 Hibernate 配置的关联的 bean 的引用。在 Spring 框架中,解释器模式在 Spring 表达式语言(SpEL)中使用。Spring 从 Spring 3.0 中增加了这个新功能,读者可以在企业级应用程序中通过 Spring 框架使用它。在企业级应用中,如果使用到 Spring 框架,那么外观模式是常用于应用程序的业务服务层,它用于整合所有服务。

2401_84413145的博客 720

16.Java基础之泛型容器类

/将字符串添加到容器中下标为location的字符串前面。//将字符串添加到容器中下标为location的字符串前面。for(Value k:b)//k依次等于b[i]成为第i个对象的管理者。//移除下标为index的字符串;//将容器中的字符串填充到字符串数组a中。//移除下标为index的字符串;//将容器中的字符串填充到字符串数组a中。//得到容器中下标为index的字符串。//得到容器中下标为index的字符串。//将字符串添加到notes容器中。//将字符串添加到notes容器中。

weixin_74256947的博客 103

c++ string类_【Java核心知识】容器类(一)基础知识

【Java核心知识】容器类(一) 容器类又称为集合类,但我个人更偏向于容器类这个叫法,容器,盛放物体的东西,在《Java编程思想》的英文版中,给这一章起的标题是:holding your objects,容器类很形象的描述了这个类的目的就是从来盛放你的对象的。数组同样具有存储对象(引用)的功能,更多的时候,数组用来存储基本数据类型,但是数组一经创建以后,大小就已经固定,不能...

weixin_39567169的博客 171
上一篇: 【校园生活】双非艰难的秋招路程回顾
下一篇: 【并发编程】并发编程
StrongHelper
博客等级 码龄8年 54粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值