循环---匹配

  今天处理一个循环问题,一定记得在循环的时候能尽量少进行循环,那么一定要进行少量的循环,

  举个例子,简单的60万条数据,如果有三层循环,那就是40万的三次方,时间就会变的非常慢,有时候过程性思想是很有利于解决某个具体问题的。这些数据的每一条都是可以分成23个字段,进行提取其中的两个,根据一些规则进行查看其中的异常,

  首先,第一点要把其中一个字段数目大于比方说5K的或得到,只针对这些进行下一步的处理,那么首先想到的就是先把60万循环一次,得到大于5k的一个集合,list或者map都可以,当然我们为了在后来的查询能够快速更倾向于用map。

  接下来,我们对每一批大于5k的这些数据进行处理,获取其中第二个字段,并把重复的都保存下来,每一个都保存下来,同样的也是到一个map中,对这一批数据进行一些阈值的处理,然后再次进行对得到的每一个进行处理。

  这样就进行了至少三次的迭代循环,导致时间非常大,可以单独实现三个方法,查看运行的结果,找出所需要的数据,然后进行整合方法,

    查看一次完整的40万循环可以同时得到什么东西,把这些进行保存,并返回,返回的时候可以用类进行处理,

还有字符串组合到一起进行处理,有时候也是个好的解决办法,

比方说,  key——value  一个key对应多个value,但是怎么存储呢,常规的 map的value对应一个list,或者其他的组合一下, 到60万里面进行查询匹配,查到第一个再次匹配第二个。但是这样的循环却是很多的,

  换个思路,把这个key和value组合到一起,作为一个新的String,这样就不会出问题了。 因为每个都是单独的,所以可以是一个新的key,这样速度快多了。

原文地址:https://www.cnblogs.com/2589-spark/p/3518094.html