java集合遍历高级方法

Java 里各个容器的最全遍历方法汇总 遍历可以说是对数据结构最常见的操作。之前说基本的操作是“增删改查”,但是遍历,就是要让我们找到,要对谁进行“增删改查”。一般,会结合一些 if 判断,来进行操作。 所以在准备这期文章时,我在删除那里停顿了很久。想不明白为什么边遍历边删除,要用 Iterator + remove,后来自己写了一个例子,放在文末。自觉非不用也没有关系,就是写出来很奇怪。欢迎批评指正。 套路: for/while 循环,最普通的那种挨个取,要求容器有序; for 增强版:增强 for 循环; Iterator for、whi. 阅读详情

在学习java前,我接触了很久的c,其中学到的第一个集合就是int数组了,其中遍历数组的方式其实还是挺麻烦的。需要进行sizeof(arr)/sizeof(int) 这样对int数组的元素个数进行计算。当然学到字符串时字符可以通过库函数比如Strlen这样的函数来计算长度,再配合while或者for进行遍历。但是在整形浮点之类的数组中没有完善的函数来直接对数组进行操作。因此,在学习了java函数后,容器的概念和便利性让我印象深刻。

java中拥有实现接口和增强的函数来进行遍历。接口可以实现的有Iterator迭代器,还有增强for函数,这两种方式可以替代普通for和while方法来进行遍历。

Iterator实现方法如下。

//定义集合

Collection coll =new Arraylist();//这里定义了一个数组集合

//实现迭代器Iterator

Iterator iter=coll.Iterator;

//然后就可以通过集合来调用迭代器方法了

while(iter.hasNext()){//通过hasNext来判断next上面有没有元素

System.out.println(iter.next());//输出next上的元素。

}

上面可以看出两个方法hasNext和next的两个方法,由于hasNext返回值是boolean类型,所以可以放在while后面的括号中。当然无论在哪个语言中,遍历都是通过指针一个一个调用下一个元素来进行的,所有next指针 顾名思义,是调用下一个元素。通过对其System out可以进行输出。hasNext的最大作用就是限制了next指针的移动位置,通过hasnext可以进行下一个元素的预知。当下一个元素不在集合内返回值为false。中断循环。

注意,hasNext不会导致指针的移动,而next可以导致指针移动所以

while(iter.next()!=null){//调用next去判断下一个指针位置元素是否为空。

System.out.println(iter.next());}//再调用next进行输出

在以上的方法中,next调用了两次,当然第一次是进行判断,那么就会导致判断的时候指针移位。输出的时候指针又向下移位了一格。但是移位两格只输出了后面的那一格。所以导致每次输出会略过一个元素。

所以由此可见hasNext还是不可或缺的方法。

接着就是remove方法,这个方法可以在调用了next方法指针偏移了之后将指针进行归位,也就是直到第一个元素的前面一个位置。此时指针没有指向任意一个元素,因此不能直接输出该位置,要再调用next方法进行输出。

当然在Map中也有个remove方法,那个是移除元素。跟这个用法天壤之别。在此做个区别提示。

Java for循环几种写法整理 主要介绍了Java for循环几种写法整理的相关资料,需要的朋友可以参考下 立即下载

相关推荐

从频谱入手搞定ESD:手把手教你用示波器和频谱仪分析静电干扰(以Type-C接口为例)

本文详细介绍了如何利用示波器和频谱仪分析Type-C接口的ESD干扰问题。通过频谱特性分析、耦合路径诊断和实战测试,提供了一套完整的ESD防护方案,包括三级防护设计和器件选型建议,帮助工程师有效解决静电放电导致的系统故障。

weixin_42662293的博客 347

Java:集合for高级循环遍历

增强for循环: 格式:for(变量数据类型 要遍历的变量 :元素所在数组(集合)名称) 也即 for(Type element: array或collection) 使用foreach遍历集合: 只能获取集合中的元素,不能对集合进行操作。 而迭代器Iterator除了可以遍历,还可以对集合中的元素遍历时进行remove操作。 如果使用ListIterat...

dienangpiao2051的博客 269

科大讯飞(1): 环形6麦语音唤醒—驱动板上的接口

介绍环形麦阵列驱动板上的接口,及其疑问

bing_feilong的博客 1175

java对集合遍历的四种方式

java遍历集合的四种方式: 普通for循环 迭代器 加强for循环(foreach) list.forEach

程序员大腾的博客 4390

一个响应ping包延迟偏大的问题

前段时间客户反馈一个使用pc上的命令行ping无线设备(WiFi4)时,设备平均响应时间(测试时长2小时,1秒Ping一次)相比其它机型偏慢的问题,并上传上具体的时间的Log.从log中看到,大多数包的响应还是比较快的,只是个别响应时间较长,且响应时间长的包时间几乎都是一样的100多ms.如下是部分响应时间截图. 整个2小时的测试时间里,总是时不时的出这么上102,104ms的响应时间,这直接导致了平均响应时间被拉大.于是本地测试,也发现了类似的延迟.本地测试时,现象略有...

流风回雪的博客 1万+

SoC 验证老兵手册

《SoC验证老兵手册》摘要: 针对大型SoC系统级验证,手册提出Cache+DMA场景的高效验证方案。核心方法采用C测试用例(模拟Linux/RTOS真实场景)触发隐蔽bug,配合SV Checker精准捕捉硬件问题(如DMA读取脏缓存行)。特别强调验证方法论:C用例负责复杂行为模拟,SV专注RTL正确性检查;利用Linux天然并发性暴露硬件缺陷。手册还包含模拟面试攻防技巧,指出验证架构师需具备定义Stimulus/Checker边界的能力。终极判断标准:未通过Linux下Cache+DMA+SMP+中断测

元直的博客 1371

Java List遍历优化实战:从性能瓶颈到高效实现

本文通过对Java List常见遍历方式的性能测试和场景分析,得出以下核心结论:简单遍历(ArrayList):普通for循环(性能最优)或增强for循环(可读性最优)。遍历删除/修改:Iterator(基础需求)或ListIterator(双向遍历/修改需求)。复杂数据处理:Stream API(串行/并行,根据数据量和场景选择)。非随机访问集合(LinkedList):增强for循环或Iterator(避免普通for循环)。最后,需要强调的是:性能优化不能脱离实际场景。

2503_94649187的博客 598

病理WSI配准库valis教程

病理WSI配准库valis教程

azrealq的博客 2598

笔记:Java中三种遍历集合的方式

Java中三种遍历集合的方式: 第一种遍历集合的方式:迭代器~集合特有的遍历方式 第二种遍历集合的方式:带索引的遍历方式 第三种遍历集合的方式:增强for~最方便的遍历方式 使用代码呈现: public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.nam.

Serendipity的博客 2641

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

【WorkBuddy专栏25】如何选择大模型——积分消耗、用途场景、选型决策全指南

AI人人懂 944

【电源专题】Type-C母座外壳直接接主板GND还是接RC呢?别再纠结了!

Type-C屏蔽壳接地这件事,没有唯一标准答案。符合规范、贴合产品、能过认证,就是最优解。希望这篇文章能帮你理清思路。

一点硬件 601

黑马程序员---集合框架工具类Collections,数组工具类Arrays常见方法以及1.5版本新特性(高级for,可变参数和静态导入)

------- android培训、java培训、期待与您交流! ---------- 集合框架工具类:Collections 通过程序练习常用方法: import java.util.*; public class CollectionsDemo { public static void main(String[] args) { //fill(l,"x");将l集合内元素替换

youngster890402的专栏 547

使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间

在泊松回归模型中,我们通常关注的是自变量对事件发生率的影响,而事件密度比(Incidence Rate Ratio,IRR)可以帮助我们理解不同自变量对事件发生率的相对影响。在本文中,我们将使用R语言来获取泊松回归模型所有系数的事件密度比的95%置信区间。通过以上步骤,我们可以使用R语言获取泊松回归模型所有系数的事件密度比的95%置信区间。为了获取事件密度比的置信区间,我们将使用。使用R语言获取泊松回归模型的事件密度比(Incidence Rate Ratio,IRR)的95%置信区间。

BugCrusher的博客 1264

java中map集合的不同方法作用和适用环境

选择Map方法时需结合以下因素:​​功能需求​​:增删改查、排序、范围查询、线程安全等。​​性能需求​entrySet遍历比keySet更高效;HashMap的get/put是 O(1),TreeMap是 O(log n)。​​并发场景​​:优先用(而非Hashtable),使用compute等原子方法。​​代码简洁性​​:Java 8+ 的merge等方法可简化复杂逻辑。合理选择方法和实现类,能显著提升代码的可读性和性能。

2402_83164836的博客 1068

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java 集合中的遍历方式

集合中的遍历方式 单列集合: 1.转数组 toArray()方法 然后用数组的方法遍历 2.迭代器 hasNext() (判断是否有元素) ,next()(获取元素), Iterator()属于Collection中的方法 ListIterator是Iterator的子类,但不属于Collection ArrayList al = new ArrayLilst(); Iterator i...

luoxiaobao666的博客 189

深度学习工具包 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 集合框架 Collection的介绍和常用方法,iterator迭代器遍历集合的方法和原理

这个我没学过,每次遇到都有点懵,今天补补课,好记性不如烂博客~ 因为数组存储引用数据类型时有局限性,比如不能自动增长,为了方便封装了一些集合类供使用。 数组与集合的区别 数组可以存储基本数据类型也可以存储引用类型,集合只可以存引用数据类型(对象),但是可以通过JDK1.5自动装箱的特性减少不便。 数组长度是不可变的,集合的长度是可变的,可以随着元素的增加而增长(有的还是通过数组实现的,重新new一个1.5倍的数组,然后把原来数组中的数据存进去,原来的数组变成垃圾,1.5倍增长是一个折中的办法为了避免频繁地

虾米的日常总结 307

IDEA的使用指南

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

java之高级for循环

高级for循环 格式: for(数据类型 变量名 : 被遍历的集合(Collection)或者数组) { } 对集合进行遍历。 只能获取集合元素。但是不能对集合进行操作。 迭代器除了遍历,还可以进行remove集合中元素的动作。 如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作。 传统for和高级for有什么区别呢?

李海明的博客 483

单列集合的三种遍历方法,及list的特有遍历方法,和list的两种排序

Collection遍历 ①把集合转换为数组,对数组进行遍历 Object[] toArray(); ②获取集合的迭代器 Itreator 该接口是集合的迭代器接口类,定义了常见的迭代方法 1:boolean hasNext() 判断集合中是否有元素,如果有元素可以迭代,就返回true。 2: E next() 返回迭代的下一个元素,注意: 如果没有下一个元...

ღ 794

Java遍历集合中的元素

在Java中遍历一个集合中元素的方法有很多种,下面我们来介绍一下其中的两种 使用迭代器遍历 使用for循环以及增强for循环遍历 首先我们先创建一个集合collection,并添加元素 Collection<String> collect = new ArrayList<String>(); collect.add("张三"); co...

weixin_43731571的博客 1006

java中三种常见集合List,Set,Map的遍历方法

List接口和Set接口继承自Collection接口,可以使用Collection接口中常用的方法,如 add(Object e) // 添加指定对象至当前集合 remove(Object o) // 将指定对象从当前集合移除 isEmpty() // 返回布尔值,判断当前集合是否为null iterator() // 返回用于遍历集合内元素的迭代器 size() /...

易碎的_骄傲着 315

高级for循环在java集合中的应用

package day05; import java.util.*; import day02.Sop; class AdvForDemo { public static void main(String[] args) { List list=new ArrayList(); list.add("01HelloWorld"); list.add("02HelloWorld"

MyJava_MyChoice的专栏 1076

黑马程序员11--集合

集合 ------- android培训、java培训、期待与您交流! ---------- 集合类只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。 Collection    |--List   |--ArrayList:底层的数据结构是数组结构。查询很快。但是增删稍慢。线程不同步。   |--LinkedList:底

Json 487

黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入

------- android培训、java培训、期待与您交流! ---------- 黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入 1.1 高级for循环(示例1) 格式:for(数据类型 变量名 : 被遍历的集合(Collection)或者数组){ } 对集合进行遍历。只能获取集合元素。但是不能对集合进行操作。 迭代器除了遍历,还可以进行...

weixin_30807677的博客 104

原生 遍历_迭代器模式统一集合的遍历方式

今天来介绍迭代器模式(Iterator Design Pattern),它还有另一个名字,叫作游标模式(Cursor Design Pattern)。1,遍历集合元素现在的高级语言(比如 C++,Java,Python等)都支持很多种集合(比如 List,Map,Set等),用于存储对象。同时这些高级语言也都原生支持了迭代器,这使得遍历集合变得非常简单。下面我们来看下,如果不使用迭代...

weixin_29124423的博客 142
上一篇: TreeSet集合使用
Codemenon
博客等级 码龄5年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值