java优化双重嵌套for循环

白色玫瑰 程序猿

时间: 2023-05-22 阅读: 1 字数:3858

{}
双重for循环优化:是将某一层的数据转成map类型,用比较字段去map里面get,若拿到数据则匹配上了

双重for循环优化:是将某一层的数据转成map类型,用比较字段去map里面get,若拿到数据则匹配上了

import lombok.Data;



@Data
public class Wupin {
   private  String orderId;

   private  String wupingName;

}
import lombok.Data;

@Data
public class Order {

   private String userName;

   private String orderId;

   private String wupingName;
}
package com.ruoyi.qc.dto;

import cn.hutool.json.JSONUtil;
import lombok.val;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class TestMain {

   public static void main(String[] args) throws InterruptedException {
      List<Order> orderList = new ArrayList<>();
      for (int i = 0; i < 10000; i++) {
         Order order = new Order();
         order.setOrderId("orderid_"+i);
         order.setUserName("用户名称"+i);
         orderList.add(order);
      }

      List<Wupin> wupinList = new ArrayList<>();
      for (int i = 10000; i >0; i--) {
         Wupin Wupin = new Wupin();
         Wupin.setOrderId("orderid_"+i);
         Wupin.setWupingName("物品_"+i);
         wupinList.add(Wupin);
      }
      traditionFor(wupinList,orderList);
   }

   /**
    * 传统双重for循环
    * */
   public static void traditionFor(List<Wupin> wupinList, List<Order> orderList) throws InterruptedException {
      System.out.println("传统双重for循环");
      int count = 0;
      Long startTime =System.currentTimeMillis();
      System.out.println("当前时间:"+startTime);
      for (Order order:orderList) {
         for (Wupin wupin:wupinList) {
            count++;
            Thread.sleep(1);
            if (wupin.getOrderId().equals(order.getOrderId())){
               order.setWupingName(wupin.getWupingName());
            }
         }
      }
      Long endTime =System.currentTimeMillis();
      System.out.println("结束时间:"+endTime);
      System.out.println("循环次数:"+count);

   }


   /**
    * 优化双重for循环
    * */
   public static void traditionFor2(List<Wupin> wupinList, List<Order> orderList) throws InterruptedException {
      int count = 0;
      Long startTime =System.currentTimeMillis();
      System.out.println("当前时间:"+startTime);
      //集合转map
      val s=  wupinList.stream().collect(Collectors.toMap(Wupin::getOrderId, Wupin->Wupin));
      for (Order order:orderList) {
         val wuping = s.get(order.getOrderId());
         Thread.sleep(1);
         if (wuping != null){
            order.setWupingName(wuping.getWupingName());
            count++;
         }
      }
      Long endTime =System.currentTimeMillis();
      System.out.println("结束时间:"+endTime);
      System.out.println("循环次数:"+count);
      System.out.println(JSONUtil.toJsonStr(orderList));
   }
}

原文地址:https://blog.csdn.net/qq_37201836/article/details/125153307?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168474933716800184119697%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168474933716800184119697&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-27-125153307-null-null.142^v87^control_2,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96

本文章网址:https://www.sjxi.cn/detil/d70824138a594bada120333efbc6ad85

最新评论

当前未登陆哦
登陆后才可评论哦

湘ICP备2021009447号