if else和for循环嵌套,break的使用

奋斗吧
奋斗吧
擅长邻域:未填写

标签: if else和for循环嵌套,break的使用 Java博客 51CTO博客

2023-07-25 18:24:13 151浏览

if else和for循环嵌套,break的使用,需求:有两个集合A和BA:集合中包含对象,对象中有两个属性,k1,v1例如:A中的a1对象,k1="a1",v1="23.1"B:集合中包含对象,对象的属性中包含一个string类型的数组,每个数组设置上限长度为50,集合的size也不能超过五十,目前该集合中已有三十多个,但要排除其中六个,根据名字进行排除,例如:可用的都为固定格式开头“我是自建1、我是自建2....”B集合的对象b1:我是自建1

需求:

有两个集合A和B

A:集合中包含对象,对象中有两个属性,k1,v1
例如:A中的a1对象,k1="a1",v1="23.1"

B:集合中包含对象,对象的属性中包含一个string类型的数组,每个数组设置上限长度为50,集合的size也不能超过五十,目前该集合中已有三十多个,但要排除其中六个,根据名字进行排除,例如:可用的都为固定格式开头“我是自建1、我是自建2....”

B集合的对象b1:我是自建1(名字),数组,数组的长度,等属性

提示:需要将A集合v1的值添加到B集合的对象的数组中,不可超过数组长度,已有分组不足时才可进行新建。

if else和for循环嵌套,break的使用_IP

if else和for循环嵌套,break的使用_数组_02

 

if else和for循环嵌套,break的使用_List_03

package job;
  
  
 import com.aliyun.openservices.log.exception.LogException;
 import models.bean.BlackIP;
 import models.bean.LogIpBlack;
 import models.bean.MyBlackList;
 import models.test.IPBlackTest;
 import play.jobs.Every;
 import play.jobs.Job;
 import utils.IPGroupCRUD;
  
 import java.util.Arrays;
 import java.util.List;
  
 /**
  * @author zd
  * @create 2022-10-09 16:50
  */
 @Every("5mn")
 public class BlackIPJob extends Job {
     public void doJob() throws LogException {
         System.out.println("job执行了*****************************************************");
         /**
          * 获取log中的可疑IP,li记录添加的索引
          */
         List<LogIpBlack> logIPList = IPGroupCRUD.getLogIP();
 //模拟八百个值填满分组
         for (int i = 0; i < 800; i++) {
             LogIpBlack logIp = new LogIpBlack("2", "23.34.1." + i);
             logIPList.add(logIp);
         }
  
         /**
          * 创建返回结果的对象
          */
         String addResult = "";
         BlackIP blackIP = new BlackIP();
  
         /**
          * 判断ip是否已经存在
          */
  allFor:
         for (LogIpBlack logIpBlack : logIPList) {
             /**
              * 获取所有IP黑名单分组信息
              */
             List<MyBlackList> blackList = IPGroupCRUD.getBlackList();
 //已有的分组中有六个为不可添加分组
             int myGroup = blackList.size() - 6;
  
             String logValue = logIpBlack.logValue;//获取值
  
             boolean ipExist = BlackIPJob.selectByIP(logValue, blackList);//通过方法获取返回值
             //判断IP是否存在
             if (ipExist == false) {
                 //不存在则进行添加,循环IP分组
                 ipFor:
                 for (MyBlackList myBlackList : blackList) {
  
                     if (myBlackList.ipName.startsWith("IP黑名单") && myBlackList.ipList < 50) {
                         String ips = "";
                         ips = ips + logValue + ",";
                         //取出原来的数据
                         String s = "";
                         for (String groupIP : myBlackList.groupIPs) {
                             s = s + groupIP + ",";
                         }
  
                         String s1 = ips + s;
                         ips = s1.substring(0, s1.length() - 1);
  
                         System.out.println(ips);
                         //修改IP分组
                         IPGroupCRUD.alterIPGroup(myBlackList.ipId, ips, myBlackList.ipName, myBlackList.version, "block");
                         blackIP.add_result = "分组添加成功!";
                         break ipFor;//添加成功跳出循环,进行下一个IP值循环,否则会造成重复添加
                         //判断当前对象是否为集合中最后一个
                     } else if (blackList.size() - 1 == blackList.indexOf(myBlackList)) {
                         if (blackList.size() > 49) {//大于49则证明无法进行新建
                             blackIP.add_result = "新建分组失败!分组已满,请联系管理员处理。";
                            break allFor;
                         }
                         System.out.println("**********新建");
                         String name = "IP黑名单" + (myGroup + 1);
                         IPGroupCRUD.addIPGroup("block", name, "custom_acl", 1, "IP", "");//新建分组
                         doJob();//重新调用方法,刷新执行
  
                     }
                 }
  
             }
  
         }
         blackIP.save();//保存对象到数据库
     }
  
     /**
      * 根据传入的ip判断是否存在
      *
      * @param ips
      */
     public static boolean selectByIP(String ips, List<MyBlackList> blackList) {
         boolean res = false;
         for (MyBlackList myBlackList : blackList) {
             String[] groupIPs = myBlackList.groupIPs;
             for (int i = 0; i < groupIPs.length; i++) {
                 if (groupIPs[i].equals(ips)) {
                     res = true;
                 }
             }
         }
         return res;
     }
 }

如有好的方法可提升效率,欢迎讨论

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695