精华内容
下载资源
问答
  • java循环遍历(增强for循环、forEach)
    千次阅读
    2019-06-14 14:22:22

    遍历一个List有如下几种方法

    方式1:

    public static void test1(List<String> list) {
      for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
      }
    }

    方式2:

    public static void test2(List<String> list) {
      for (int i = 0,lengh=list.size(); i < lengh; i++) {
        System.out.println(list.get(i));
      }
    }

    方式3 Iterator遍历:

    public static void test3(List<String> list) {
      Iterator<String> iterator = list.iterator();
      while(iterator.hasNext()){
        System.out.println(iterator.next());
      }
    }

    方式4 增强for循环 java5引入:

    public static void test4(List<String> list) {
      for(String str:list){
        System.out.println(str);
      }
    }

    方式5 forEach java8引入:

    public static void test5(List<String> list) {
      //list.forEach(System.out::println);和下面的写法等价
      list.forEach(str->{
        System.out.println(str);
      });
    }

    方式6 同样java8引入:

    public static void test6(List<String> list) {
      list.iterator().forEachRemaining(str->{
        System.out.println(str);
      });
    }

    出处:https://www.cnblogs.com/yiwangzhibujian/p/6919435.html

     


    在数据量不大的时候(List中元素不多的时候)几种方式的性能差别不大,大的话后面引入的几种方式会更优秀一点。

    理论上增强for循环底层由Iterator实现,应该性能差不太多?

     

    更多相关内容
  • Java 循环遍历中直接修改遍历对象如下,会报异常:for (ShopBaseInfo sp: sourceList) {if(sp.getId()==5){sourceList.remove(sp);}}Exception in thread "main" java.util.ConcurrentModificationExceptionat java....

    Java 循环遍历中直接修改遍历对象如下,会报异常:

    for (ShopBaseInfo sp: sourceList) {

    if(sp.getId()==5){

    sourceList.remove(sp);

    }

    }

    Exception in thread "main" java.util.ConcurrentModificationException

    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)

    at java.util.ArrayList$Itr.next(ArrayList.java:859)

    如果有需要修改循环遍历对象的需求,可以使用迭代器来实现,代码如下:

    /**

    * @author jack

    **/

    public class ForLoopTest {

    public static void main(String[] args) {

    List sourceList = new ArrayList();

    ShopBaseInfo shop = null;

    for (long i=0 ;i<8;i++){

    shop = new ShopBaseInfo();

    shop.setId(i);

    shop.setShopName("shop"+i);

    sourceList.add(shop);

    }

    System.out.println("sourcelist init --------");

    printList(sourceList);

    /* for (ShopBaseInfo sp: sourceList) {

    if(sp.getId()==5){

    sourceList.remove(sp);

    }

    }*/

    Iterator iterator = sourceList.iterator();

    while (iterator.hasNext()) {

    ShopBaseInfo sbi = iterator.next();

    if(sbi.getId() == 5){

    iterator.remove();

    }

    }

    System.out.println("after sourcelist remove --------");

    printList(sourceList);

    }

    private static void printList(List sourceList){

    StringBuilder builder = new StringBuilder();

    for (ShopBaseInfo shop : sourceList ) {

    builder.append("->").append(shop.getShopName());

    }

    System.out.println(builder);

    }

    }

    运行结果:

    sourcelist init --------

    ->shop0->shop1->shop2->shop3->shop4->shop5->shop6->shop7

    after sourcelist remove --------

    ->shop0->shop1->shop2->shop3->shop4->shop6->shop7

    标签:shop,遍历,Java,iterator,sourceList,sp,修改,ShopBaseInfo,java

    来源: https://www.cnblogs.com/xuzhujack/p/10880821.html

    展开全文
  • java循环遍历map的方法

    2021-03-08 07:14:24
    //java HashMap循环遍历map的方法import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;//循环遍历map的方法public ...

    //java HashMap 循环遍历map的方法

    import java.util.ArrayList;

    import java.util.HashMap;

    import java.util.Iterator;

    import java.util.List;

    import java.util.Map;

    import java.util.Set;

    //循环遍历map的方法

    public class CircleMap {

    public static void main(String[] args) {

    Map tempMap = new HashMap();

    tempMap.put("a", 1);

    tempMap.put("b", 2);

    tempMap.put("c", 3);

    // JDK1.4中

    // 遍历方法一 hashmap entrySet() 遍历

    System.out.println("方法一");

    Iterator it = tempMap.entrySet().iterator();

    while (it.hasNext()) {

    Map.Entry entry = (Map.Entry) it.next();

    Object key = entry.getKey();

    Object value = entry.getValue();

    System.out.println("key=" + key + " value=" + value);

    }

    System.out.println("");

    // JDK1.5中,应用新特性For-Each循环

    // 遍历方法二

    System.out.println("方法二");

    for (Map.Entry entry : tempMap.entrySet()) {

    String key = entry.getKey().toString();

    String value = entry.getValue().toString();

    System.out.println("key=" + key + " value=" + value);

    }

    System.out.println("");

    // 遍历方法三 hashmap keySet() 遍历

    System.out.println("方法三");

    for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {

    Object obj = i.next();

    System.out.println(obj);// 循环输出key

    System.out.println("key=" + obj + " value=" + tempMap.get(obj));

    }

    for (Iterator i = tempMap.values().iterator(); i.hasNext();) {

    Object obj = i.next();

    System.out.println(obj);// 循环输出value

    }

    System.out.println("");

    // 遍历方法四 treemap keySet()遍历

    System.out.println("方法四");

    for (Object o : tempMap.keySet()) {

    System.out.println("key=" + o + " value=" + tempMap.get(o));

    }

    System.out.println("11111");

    //java如何遍历Map map = new HashMap ();

    System.out.println("java 遍历Map map = new HashMap ();");

    Map map = new HashMap();

    Set keys = map.keySet();

    Iterator iterator = keys.iterator();

    while (iterator.hasNext()) {

    String key = iterator.next();

    ArrayList arrayList = map.get(key);

    for (Object o : arrayList) {

    System.out.println(o + "遍历过程");

    }

    }

    System.out.println("2222");

    Map mapList = new HashMap();

    for (Map.Entry entry : mapList.entrySet()) {

    String key = entry.getKey().toString();

    List values = (List) entry.getValue();

    for (String value : values) {

    System.out.println(key + " --> " + value);

    }

    }}}

    遍历HashMap

    HashMap attMap;

    Iterator i = attMap.entrySet().iterator();

    while(i.hasNext()){

    Object o = i.next();

    String key = o.toString();

    //这样就可以遍历该HashMap的key值了。

    }

    当然也可以遍历Map.Entry项,值。方法类似。

    也可以

    Object [] obja=attmap.keySet().toArray();

    听我们的支持说遍历hashmap使用entryset快些,因大部分都是用keyset遍历的,也没有去想那么多。今天研究了一下,果然差了很多。

    import java.util.HashMap;

    import java.util.Iterator;

    import java.util.Calendar;

    public class HashMapTest {

    public static void main(String[] args) {

    HashMap hashmap = new HashMap();

    for(int i=0;i<1000;i++){

    hashmap.put(""+i,"hello");

    }

    long bs = Calendar.getInstance().getTimeInMillis();

    Iterator iterator = hashmap.keySet().iterator();

    //String value = "";

    while(iterator.hasNext()) {

    //value = hashmap.get(iterator.next());

    System.out.println(hashmap.get(iterator.next()));

    }

    System.out.println(Calendar.getInstance().getTimeInMillis() - bs);

    listHashMap();

    }

    public static void listHashMap(){

    java.util.HashMap hashmap = new java.util.HashMap();

    for(int i=0;i<1000;i++){

    hashmap.put(""+i,"hello");

    }

    long bs = Calendar.getInstance().getTimeInMillis();

    //Set set = hashmap.entrySet() ;

    java.util.Iterator it = hashmap.entrySet().iterator();

    while(it.hasNext()){

    java.util.Map.Entry entry = (java.util.Map.Entry)it.next();

    // entry.getKey() 返回与此项对应的键

    // entry.getValue() 返回与此项对应的值

    System.out.println(entry.getValue());

    }

    System.out.println(Calendar.getInstance().getTimeInMillis() - bs);

    }

    }

    对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。

    而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。

    对于我们做web的,可能不部分都是用vo对象或是form封装信息,所以用到hashmap时,其内存放的都是上面的对象。因此使用entryset遍历性能会有所提高。

    hashmap使用很多,比如导入信息时就要用到,因大部分导入的信息要去判断是否有重复的信息,这样就可以利用containsKey来进行处理了,而不用在插入的时候去进行处理。

    展开全文
  • 这样子,刚才查了下是叫增强型for循环,弊端是无法初始化Arraylist对象,要找数中某个具体数到时候需要重新定义下标Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,...

    这个叫什么玩意来着我忘记了,反正是for里面的一个方法,你可以把他看成int m

    m属于这个集合中,m++;这样子,刚才查了下是叫增强型for循环,弊端是无法初始化Arraylist对象,要找数中某个具体数到时候需要重新定义下标

    Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。

    例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:

    for(int i=0; i

    而访问一个链表(LinkedList)又必须使用while循环:

    while((e=e.next())!=null) { ... e.data() ... }

    以上两种方法客户端都必须事先知道集合的内部结构,访问代码和集合本身是紧耦合,无法将访问逻辑从集合类和客户端代码中分离出来,每一种集合对应一种遍历方法,客户端代码无法复用。

    更恐怖的是,如果以后需要把ArrayList更换为LinkedList,则原来的客户端代码必须全部重写。

    为解决以上问题,Iterator模式总是用同一种逻辑来遍历集合:

    for(Iterator it = c.iterater(); it.hasNext(); ) { ... }

    奥秘在于客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。

    客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。

    呵呵,借点别人的东西,希望对你有用

    比如

    for (int i = 0; i < 10; i++) {System.out.println(i);}

    就是循环遍历

    出0-9

    下面说得具体点

    循环语句使语句或块的执行得以重复进行。Java 编程语言支持三种循环构造类型:for,while 和 do 循环。for 和 while 循环是在执行循环体之前测试循环条件,而 do 循环是在执行完循环体之后测试循环条件。这就意味着 for 和 while 循环可能连一次循环体都未执行,而 do 循环将至少执行一次循环体。

    【1】 for 循环

    for 循环的句法是:

    for (初值表达式; boolean 测试表达式; 改变量表达式){

    语句或语句块

    注意:for 语句里面的 3 个部分都可以省略,但是我们不建议这么做。

    【2】 while 循环

    while 循环的句法是:

    while (布尔表达式) {

    语句或块

    请确认循环控制变量在循环体被开始执行之前已被正确初始化,并确认循环控制变量是真时,循环体才开始执行。控制变量必须被正确更新以防止死循环。

    【3】do while循环

    do while循环的句法是:

    do {

    语句或块;

    }while (布尔测试);

    象 while 循环一样,请确认循环控制变量在循环体中被正确初始化和测试并被适时更新。作为一种编程惯例,for 循环一般用在那种循环次数事先可确定的情况,而 while 和 do用在那种循环次数事先不可确定的情况。

    do 循环与 while 循环的不同这处在于,前者至少执行一次,而后者可能一次都不执行。

    【4】 特殊循环流程控制

    下列语句可被用在更深层次的控制循环语句中:

    break;

    continue;

    break 语句被用来从 switch 语句、循环语句中退出,跳出离 break 最近的循环。

    continue 语句被用来略过并跳到循环体的结尾,终止本次循环,继续下一次循环。

    遍历就是把每个元素都访问一次.比如一个二叉树,遍历二叉树意思就是把二叉树中的每个元素都访问一次

    遍历就是把每个元素都访问一次比如一个二叉树,遍历二叉树意思就是把二叉树中的每个元素都访问一次java中的遍历是什么意思?

    java里这句话是怎么起到遍历的作用的?

    : 这个叫什么玩意来着我忘记了,反正是for里面的一个方法,你可以把他看成int m m属于这个集合中,m++;这样子,刚才查了下是叫增强型for循环,弊端是无法初始化Arraylist对象,要找数中某个具体数到时候需要重新定义下标

    java中这句话什么意思?

    : 这句话的意思是,通过WebApplicationContextUtils工具类获取ApplicationContext对象.这个对象是通过.getServletContext()方式获取的,然后把获取的ApplicationContext对象赋值给wac.WebApplicationContext是spring包中的一个类WebApplicationContextUtils是Spring 包中的一个工具类getServletContext()是struts2中获取参数的方法 你要具体理解这个,最好看api,知道它的用法.我这里只是给你提供一个简单的解释

    java中这句话怎么理解 -

    : 举个例子.项目中的持久层用hibernate实现,通常做法是写个hibernate的crud的通用类,所有的对应模块逻辑层都得有这个类的注入吧,才能操作持久层.这情况下用继承是最好不过的了,不需要各个模拟逻辑处理类里都注解吧...

    java 关于这句话是什么意思?(高手来下,简单,在线等)

    : 用static修饰的属性属于类的公共属性,任何类都可以调用他.变量是属性当然就是公共变量.成员变量为某个类专属的变量.

    Java中这句话作用是什么?望能详细解释! -

    : new Timestamp(new Date().getTime()) 得到的结果是:2012-10-23 09:43:56.046将它转换为String类型后 再截取0-10 不包括第10个字符的结果:2012-10-23作用就是获取当前日期的字符串...

    java中,这句话什么意思? -

    : 这是个定义一个FoodBean类型的变量,变量名为currentFood...

    java这句话是什么意思?说得简单形象些!谢谢

    : 就是说类是模板,就像做东西的模具,它可以创建很多对象,一个类包含变量及方法,对象可以调用这些

    来喝杯java吧,这句话是怎么来的??

    : 你好!来喝杯咖啡吧,出自《疯狂的JAVA》如有疑问,请追问.

    java中的这句话是什么意思public map login

    : Map是以键值形式存储数据,有点类似于数组. public是一个访问修饰符 map中string是它的键,存储的类型为String object是它的值,object为所有数据类型的父类,就是说可以存储任何类型的数据,调用时,可以进行转型 login是它的方法名完整的应该是 public map login(){ //定义一个map,通过put进行赋值,返回return map; }

    java里的这句话什么一,详细解释下 -

    : 这句话其实对于业务没有什么作用.这个只是往日志文件中添加一条记录,防止业务系统出现问题之后,可以查看日志.一般都是用log4j来做日志的,级别是debug的级别!

    展开全文
  • 转自:https://blog.csdn.net/changjizhi1212/article/details/81036509JAVA循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。1、for循环遍历listfor(int i=;iif(list.get(i)...
  • public class Test1 { public static void main(String[] args) { //例D:\qrcodeFile文件夹下包含20190116和20190117俩个文件夹, //20190116和20190117俩个文件夹中分别有俩个文件 isDirectory(new File(&...
  • 主要介绍了java JSONArray 遍历方式(2种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • java数组遍历 删除remove。需要的朋友可以过来参考下,希望对大家有所帮助
  • for循环遍历; foreach遍历; Iterator 迭代器while 遍历; Iterator迭代器for遍历; 下面用这四种遍历来遍历一个list集合: 创建一个list 集合,如: 第一种:for循环遍历; 一个用for ,一个while,但...
  • 1、使用entries来遍历(entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry)使用说明:该方法只能用于java 5或者更高的版本;如果遍历的map是一个空值,循环会抛出NUllPointerException,因此在遍历...
  • java循环遍历Map

    2021-02-26 19:21:47
    直接上代码:方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。Map map = new HashMap();for (Map.Entry entry : map.entrySet()) {System.out....
  • 本文主要实现的是遍历文件夹,获取子文件的路径… 需要代码的请直接看最下面的代码 文件路径 桌面有一个文件,名叫123,路径是C:\Users\14784\Desktop\123(写代码的时候记得将“\”进行转义否则会报错) 123文件下...
  • 在日常代码中,遍历List然后删除特定的元素是很常见的操作,Java中的循环主要有普通的for循环、增加for循环、iterator遍历这几种方法,我们知道在循环list时删除元素可能引起异常,这里总结下什么情况下会引起异常,...
  • java循环遍历枚举类型

    万次阅读 多人点赞 2018-09-11 09:45:07
    //讲枚举转换成list格式,这样前台遍历的时候比较容易,列如 下拉框 后台调用toList方法,你就可以得到code 和name了 public static List toList() { List list = Lists.newArrayList();//Lists.newArrayList()...
  • Java递归遍历树形结构

    2020-09-02 16:42:25
    主要介绍了Java递归遍历树形结构的相关资料,需要的朋友可以参考下
  • 先序遍历 实现过程 根据先序遍历的顺序,先访问根节点,再访问左子树,后访问右子树,而对于每个...4)若不为空,则循环至1)操作; 5)如果为空,则继续出栈,并将出栈节点的右孩子置为当前节点,看其是否为空,重复
  • 主要介绍了Java遍历ConcurrentHashMap的四种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 循环遍历Java中的JSON对象

    千次阅读 2021-02-12 10:54:09
    我很难理解如何循环下面的json对象[{"course_slug":"course-4504","course_description":"A principle refers to a fundamental truth. It establishes cause and effect relationship between t...","course_name":...
  • 三种for循环遍历

    2021-03-07 23:28:32
    import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class For{public static void main(String[]args) {//new一个集合对象List alList=new ArrayList();alList.add(1);//自动转成...
  • JAVA|循环遍历

    2020-07-21 00:00:00
    所以今天小编就在本文中给大家整理了Java中的循环遍历。 2循环 循环,顾名思义就是不断地重复某一指令。可分为两部分,条件——循环体。下面小编就一一列举java中的循环以及用法。 2.1while循环 while循环可以理解...
  • public class Shuzhu { public static void main(String[] args) { //用增强型for循环遍历二维数组 int [][]A={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}}; for (int x[]: A) { System.out.print...
  • 今天写遍历程序的时候出现了这个警告,for loop replaceable with enhanced 'for' 查了下,原来是写的程序太烂IDEA提醒,,, 改了下程序,欧克咯
  • Java中如何遍历Map对象How to Iterate ...既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)方法一 在for-each循环中使用entries来遍历这是最常...
  • java for each 循环 数组 对象遍历语法for(type itr-var : iterableobj) statement-block看个遍历数组实例 public class mainclass {public static void main(string args[]) {int nums[] = { 1, 2, 3, 4, 5, 6, 7, ...
  • java中的map遍历有多种方法,从早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点。  先初始化一个map public class TestMap {  public static Map<Integer>...
  • java-for循环遍历数组

    千次阅读 2018-08-28 22:20:00
    格式:for( 数据类型 变量名 : 数组或者集合 ){sop(变量);} public static void ... //for对于对象数组遍历的时候,能否调用对象的方法呢 String[] str = {"abc","itcast","cn"}; for(String s : str){ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 346,031
精华内容 138,412
关键字:

java循环遍历

java 订阅