您的位置:首页 > 科技 > 能源 > 广州番禺区美食攻略_整站seo策略实施_如何把品牌推广出去_长沙建设网站制作

广州番禺区美食攻略_整站seo策略实施_如何把品牌推广出去_长沙建设网站制作

2024/10/6 18:35:39 来源:https://blog.csdn.net/qq_45055856/article/details/142413680  浏览:    关键词:广州番禺区美食攻略_整站seo策略实施_如何把品牌推广出去_长沙建设网站制作
广州番禺区美食攻略_整站seo策略实施_如何把品牌推广出去_长沙建设网站制作

一.迭代器遍历Collection集合

package com.njau.d2_collection_traverse;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;/*** 目标:Collection集合的遍历方式一:使用迭代器Iterator对象遍历Collection集合*/
public class CollectionDemo01 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("成龙");c.add("老爹");c.add("小玉");c.add("特鲁");// 1、Collection集合获取迭代器的方法:Iterator<E> iterator()  返回集合中的迭代器对象,该迭代器对象默认指向当前集合的第一个元素Iterator<String> it = c.iterator();// 2、Iterator迭代器中的常用方法:1、boolean hasNext()  询问当前位置是否有元素存在,有返回true,不存在返回false//                            2、E next()  获取当前位置的元素,并同时将迭代器对象指向下一个元素处
//        System.out.println(it.next());  // 成龙
//        System.out.println(it.next());  // 老爹
//        System.out.println(it.next());  // 小玉
//        System.out.println(it.next());  // 特鲁
//        System.out.println(it.next());  // 会出bug,因为已经没有元素了// 使用循环遍历while (it.hasNext()) {String ele = it.next();System.out.println(ele);}}
}

next()方法用来获取当前元素,并将迭代器对象指向下一个元素,此处代码2中连续使用next()方法,会使得迭代器对象连续后移两次,如果指向了空元素,那么就会报错。因此一定要保证使用迭代器对象时判断一次(hasnext),获取一次,后移一次。

二.增强for循环

 

package com.njau.d2_collection_traverse;import java.util.ArrayList;
import java.util.Collection;/*** 目标:掌握遍历Collection集合的方式二:使用增强for循环* for(元素的数据类型 变量名 :数组或者集合) {*     ...* }* 增强for可以用来遍历集合或者数组* 增强for遍历集合,本质就是迭代器遍历集合的简化写法*/
public class CollectionDemo02 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("成龙");c.add("老爹");c.add("小玉");c.add("特鲁");for (String ele : c){System.out.println(ele);}// 还可以用来遍历数组String[] names = new String[]{"圣主","塔拉","刀龙","恶魔小龙"};for (String name : names) {System.out.println(name);}}
}

三.lambda表达式

package com.njau.d2_collection_traverse;import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;/*** 目标:* 使用lambda表达式遍历Collection集合*/
public class CollectionDemo03 {public static void main(String[] args) {Collection<String> c = new ArrayList<>();c.add("成龙");c.add("老爹");c.add("小玉");c.add("特鲁");System.out.println(c);// default void forEach(Consumer<? super T> action):  结合Lambda表达式遍历集合
//        c.forEach(new Consumer<String>() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });
//
//        c.forEach((String s) -> {
//                System.out.println(s);
//        });
//
//        c.forEach(s -> {
//            System.out.println(s);
//        });
//
//        c.forEach(s -> System.out.println(s));c.forEach(System.out::println);}
}

 

结合源码我们可以发现action就是构建出来的Consumer匿名内部类对象,首先检查该action对象是否为null,如果不为null,则内部使用增强for循环,this代表主调方法,即c集合,然后使用增强for循环对该集合进行遍历。每遍历到一个数据,就会将该数据送给这个action对象,这个action就是这个匿名内部类对象,使用该对象的accept方法进行接收。继续遍历第二个对象,继续重复上述操作,直到遍历接收完所有的数据为止。

Consumer接口上方有函数式接口的注解,因此可以使用lambda表达式进行简化。

四.遍历集合元素案例

遍历集合中的电影元素

package com.njau.d2_collection_traverse;public class Movie {private String name;private double score;private String actor;public Movie(String name, double score, String actor) {this.name = name;this.score = score;this.actor = actor;}public Movie(){};public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public String getActor() {return actor;}public void setActor(String actor) {this.actor = actor;}@Overridepublic String toString() {return "Movie{" +"name='" + name + '\'' +", score=" + score +", actor='" + actor + '\'' +'}';}
}
package com.njau.d2_collection_traverse;import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.function.Consumer;/*** 目标:* 掌握Collection集合对象存储对象内容,完成电影信息的展示* new Movie("《肖申克的救赎》",9.7,”罗宾斯“)* new Movie("《霸王别姬》",9.6,”张国荣,张丰毅“)* new Movie("《阿甘正传》",9.5,”汤姆.汉克斯“)*/
public class CollectionTest04 {public static void main(String[] args) {Collection<Movie> movies = new ArrayList<>();movies.add(new Movie("《肖申克的救赎》",9.7,"罗宾斯"));movies.add(new Movie("《霸王别姬》",9.6,"张国荣,张丰毅"));movies.add(new Movie("《阿甘正传》",9.5,"汤姆.汉克斯"));System.out.println(movies);// 1、使用迭代器Iterator对Collection集合进行遍历Iterator<Movie> it = movies.iterator();while (it.hasNext()) {Movie movie = it.next();System.out.println(movie);}// 2、使用增强for循环进行遍历for (Movie movie : movies) {System.out.println(movie);}// 3、使用lambda表达式进行遍历:集合对象Collection c调用c.foreach(new Consumer<Object obj>)方法
//        movies.forEach(new Consumer<Movie>() {
//            @Override
//            public void accept(Movie movie) {
//                System.out.println(movie);
//            }
//        });
//
//        movies.forEach((Movie movie) -> {
//                System.out.println(movie);
//        });
//
//        movies.forEach(movie -> {
//            System.out.println(movie);
//        });
//
//        movies.forEach(movie -> System.out.println(movie));movies.forEach(System.out::println);}
}

原理如下:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com