Java中 List , Set 有共同的父类, 就是Collection. 所有实现Collection的接口的类都有一个iterator方法,用以返回一个Iterator接口的对象.
Iterator 接口定义如下:
Boolean hasNext(); //判断是否有元素没有被遍历
Object next(); //返回游标当前位置的元素并将游标移动到下一个位置
void remove(); //删除游标左边的元素, 在执行完成next() 后该操作只能执行一次
两者区别是:
List允许重复元素, 存储是有序的, 即元素插入和读取的顺序是一致的.
Set不允许有相同的元素存在, 存储是无序的, 也就是插入的元素顺序和读取出来的元素顺序会不一致.
List ,Set , Map 下的子类:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
└Set
|-HashSet
└TreeSet
Map
├Hashtable
├HashMap
└WeakHashMap
子类的区别诸如 实现方式, 是否线程安全等等, 这里就不展开介绍了.
Map 是独立的集合, 采用键值对来存储数据也就是key-value的双列形式, 特点是键不能重复, 值可以重复.
让我们来看下遍历的方式有哪些:
使用Intellij IDE 环境, Maven 中配置文件pom.xml添加testng
<dependency> <groupId>org.testnggroupId> <artifactId>testngartifactId> <version>7.0.0version> dependency>
创建utl package, 并新建一个ListDemo.java
package utl;import org.testng.annotations.Test;import java.util.Map.Entry;import java.util.*;public class ListDemo { @Test public void testList(){ System.out.println("--------遍历list--------"); //遍历List List list=new ArrayList(); list.add("张三"); list.add("李四"); list.add("王五"); list.add("赵六"); //foreach 循环, 遍历列表 for(Object str : list ){ System.out.println("forEach: "+ str); } //通过Iterator 迭代器遍历列表+"/n" Iterator it=list.iterator(); while (it.hasNext()){ String str=(String) it.next(); System.out.println("迭代器: "+str); } // for循环 遍历列表, ArrayList 查询速度是比较快的, 循环条件是size for(int i=0;i System.out.println("for循环: "+list.get(i)); } //Lambda list.forEach(str->{ System.out.print("Lambda 遍历 : "+str +" "); }); System.out.println("\n"); System.out.println("--------遍历Set--------"); //遍历set Set set= new HashSet(); set.add("1点"); set.add("2点"); set.add("3点"); //方式一 Iterator i= set.iterator(); while(i.hasNext()){ System.out.println("set 迭代器: "+i.next()); } //方式二 for (Iterator iter=set.iterator();iter.hasNext();){ System.out.println("for循环迭代: "+iter.next()); } System.out.println("--------遍历Map--------"); //遍历map Map map=new HashMap(); map.put("1","java"); map.put("2","python"); map.put("3","C#"); //方式一 Set keys=map.keySet(); for(Iterator iterator=keys.iterator();iterator.hasNext();){ //String keyStr=(String) iterator.next(); System.out.println("map 遍历"+map.get(iterator.next())); } //方式二 Set s1=map.entrySet(); for(Iterator iter=s1.iterator();iter.hasNext();){ Entry e=(Entry)iter.next(); System.out.println("map Entry "+e.getKey()+"----"+ e.getValue());; } } }
我们来看下执行结果:
Story:
人要有一个奋斗目标,这样活起来才有精神,有奔头。整天无所事事、无聊至极的,就是因为没有目标。从小就要为自己的人生制定一个目标,然后不断地向它靠近,终有一天你会达到这个目标。如果从小就糊里糊涂,对自己的人生不负责任,没有目标没有方向,那这一生也难有作为。每个人出门,都会有自己的目的地,如果不知道自己要去哪里,漫无目的地闲逛,那速度就会很慢;但当你清楚你自己要去的地方,你的步履就会情不自禁地加快。如果你分辨不清自己所在的方位,你会茫然若失;一旦你弄清了自己要去的方向,你会精神抖擞。这就是目标的力量。所以说,一个人有了目标,才会成功。
关注我们获得更多精彩内容!
![fa4c837619260e2400a2d8aa35a7bb74.gif](https://i-blog.csdnimg.cn/blog_migrate/edcfaa50dcf1ba8e7e1bb70d75344b9c.gif)
![c0019b656789b88bfa0a22b8155f63eb.gif](https://i-blog.csdnimg.cn/blog_migrate/4b902879a4dca32b05f85e8d77638459.gif)
![2c0025392d459d035eaf455b1ab0cf20.gif](https://i-blog.csdnimg.cn/blog_migrate/1281996ab171bc4916631ca092c43cb7.gif)
![6e05ce3ffa06f36e595a2ec3608ea37a.gif](https://i-blog.csdnimg.cn/blog_migrate/38de158bd3fbc0f1057a573f28248f56.gif)
![9a1208d3c92452c9b44de76f5f7d3961.gif](https://i-blog.csdnimg.cn/blog_migrate/57163ce747e87245197612442f71705f.gif)
![01f8e347d34a3511ec986eeddf266730.gif](https://i-blog.csdnimg.cn/blog_migrate/bcf9406718b986ebcd7934871c123f76.gif)
![26988c8d2732d4ee9f5540fefdd2faf5.gif](https://i-blog.csdnimg.cn/blog_migrate/98296a6ef9343696d98ace3df2b97d40.gif)
![ed50792aa01554d25fbf3695f82669ab.gif](https://i-blog.csdnimg.cn/blog_migrate/d83684901c729c3feb694eb73f8a2943.gif)
![103b05ddc4198f4bc04c155be804aa32.gif](https://i-blog.csdnimg.cn/blog_migrate/6ee3a7b284fabe6b3d57037b6afa8633.gif)
![d030077c8605101593dbd467f4310c45.gif](https://i-blog.csdnimg.cn/blog_migrate/e02f820cc1efade667f5a03a2e05ce80.gif)
![6df71684c2330e3079b7090a1af6570d.gif](https://i-blog.csdnimg.cn/blog_migrate/446cf13ade9a2829e65c43e43cdaa0ae.gif)
![b323d5ac168595a3198eecd828527050.gif](https://i-blog.csdnimg.cn/blog_migrate/a9f3530bb55f9b1ea66fb578e1364f1e.gif)
![6e05ce3ffa06f36e595a2ec3608ea37a.gif](https://i-blog.csdnimg.cn/blog_migrate/38de158bd3fbc0f1057a573f28248f56.gif)
![252f5ab55cdf8e7f50effc3e82065ef1.gif](https://i-blog.csdnimg.cn/blog_migrate/f849dc693bd8dbf4f94b5d8c84266e33.gif)
赶快来关注吧,这里有你想找的热点内容,这里有你想要的各种资料,还有海量的资源,还在等什么。快来关注,大佬带你开车。
![bc8b6c671d48d90516997b70e35b01a1.png](https://i-blog.csdnimg.cn/blog_migrate/a1f9bd1e0140b788785b914ba13a51b7.png)
关注我们获得更多精彩内容!
![bc8b6c671d48d90516997b70e35b01a1.png](https://i-blog.csdnimg.cn/blog_migrate/a1f9bd1e0140b788785b914ba13a51b7.png)
![6de7f292af69ceeeb14a9e97c38d9f02.png](https://i-blog.csdnimg.cn/blog_migrate/2dd74c3ec845435e828f819d428c7fbb.jpeg)
长
按
解
锁
关注我们
方便拉您进群互动
![3b75705a74ff8b30641d8cd55f0fe63b.png](https://i-blog.csdnimg.cn/blog_migrate/eff616a9e1240e34726337009db48e9b.png)
测试常用Linux命令
测试工程师成长笔记
统计代码覆盖率-Python
CI/CD DevOps论述
Jmeter接口测试与数据驱动
![89dcbf36fa293aebf3901867a1a66849.png](https://i-blog.csdnimg.cn/blog_migrate/92979eed08facde38e5da063091cb3f8.jpeg)
![208e693ca775d91b389506e38bc4fab0.gif](https://i-blog.csdnimg.cn/blog_migrate/ffcc97298dc0977d7104ef17ec946b60.gif)