DAY29-JAVA的for-each、Iterator和ListIterator

集合的特性
可以依照集合是否具有「自动排序性」、「重复性」、「次序性」及「使用关键值」,为资料选择适合储存的集合物件:
(1)自动排序性:自动将加入集合的元素做递增或递减的排序。
(2)重复性:集合中的元素是否允许存在相同的物件。
(3)次序性:元素是否会依加入集合时的顺序依次排序。
(4)使用关键值:利用关键值存放元素,一个关键值(key)对照一个对应值(value),因此关键值的内容必须是唯一存在。

for-each回圈

for(元素型态 回圈控制变数 : 集合或阵列名称){
//回圈主体;

for-each回圈控制变数的形态要与集合或阵列里的元素型态相同。

...
for(String i : test)  //走访
    System.out.println(i+" ");

使用for-each回圈时要注意以下几点:
(1)只能从头开始访问每个元素,不能从集合或是阵列尾端向前走访。
(2)只能取出集合或阵列里的元素而不能置换它。
(3)for-each回圈里面的变数是区域变数。
(4)只能适用於JAVA 5.0以後的版本。

使用for-each回圈可以走访集合内的元素,但若是要使用更多存取的集合的功能,如取出子及何等,就必须靠JAVA提供的其他介面,如:Iterator、ListIterator等介面完成。

Iterator走访元素
Iterator物件只能从头读到尾,同时当我们已读取过资料,就不能将元素从头再读取一次。

Iterator itr = tset.iterator();

用tset呼叫iterator(),以便取得Iterator物件itr。

...
TreeSet<String> tset = new TreeSet<String>();
...
Iterator<String> itr = tset.iterator();  //取得iterator物件
while(itr.hasNext()){  //走访元素
    str = itr,next();
    System.out.println(str+" ");  //印出元素内容
}
itr.remove();  //删除最後读取的元素
System.out.println("TreeSet: "+tset);

利用Iterator走访物件最大的好处是,它可以用统一的方式走访不同的集合里的元素。而且Iterator物件的读取是单向且只能读一次。

ListIterator走访元素
ListIterator物件的走访则可以是双向的,有就是说可以从头到尾(正向),也可以从最後一个元素逆向读取到第一个元素(逆向)。

ListIterator litr = llist.listIterator();

...
LinkedList<Integer> llist = new LinkedList<Integer>();
llist.add(5);  //加入元素
llist.add(7);
llist.add(10);
llist.add(13);
ListIterator<Integer> litr1 = llist.listIterator();
while(litr1.hasNext())  //正向走访元素
    System.out.println(litr.next()+" ");  //印出元素内容
ListIterator<Integer> litr2 = llist.listIterator(llist.size());
while(litr2.hasPrevious())  //反向走访元素
    System.out.println(litr2.previous()+" ");  //印出元素内容

当hasNet()或hasPrevious()传回值为false时,该ListIterator物件也就没有任何的可用之处,除非再重新取得ListIterator物件。

星期五啦啦啦啦啦啦~~
10月的天秤座朋友们生日到来了!!!:))
See U tomorrow~~

菜鸟工程师的体脂肪

菜鸟工程师也有分享食记,欢迎大家追踪喔~~
https://instagram.com/engineer_bodyfat?utm_medium=copy_link


<<:  Day 21 HTML5 <HTML5 多媒体标签>

>>:  Best Digital Marketing Company | Immortal Business

Docker in docker .解决技术环境问题

缘由 很多时候我们会使用docker作为环境的控管,确保服务执行时环境是一致的。 但某些时候我们可能...

RDS程序开发

实作Visual Studio, 开发一个最简单的RDS程序. 建立一个C#主控台应用程序. 输入专...

RISC-V on Rust 从零开始(2) - 建立档案架构

基本的安装以及相关资源已经整理在上篇文章: RISC-V on Rust 从零开始(1) - 安装 ...

D7(9/7)-91App(6741) 帮商家做电商的电商专家

注:发文日和截图的日期不一定是同一天,所以价格计算上和当日不同,是很正常的。 声明:这一系列文章并无...

DVR NVR RTSP ALG Vigor 设定问题

DVR NVR RTSP ALG Vigor 设定问题 ...