Java 中list 集合中有⼏⼗万条数据,每次100条为⼀组取出(⼀定的量取出)在开发的过程中要处理Excel⽂件,将其⽂档的内容按照⼀定的形式封住加密之后写⼊到Kafka中,但是Kafka那边⼀次性不能消费⼤量的数据,所以要将数据分批次写⼊。这⾥是⽤⼀个List来作为中间载体,每次取出⼀定量的数据写⼊Kafka中,并且写⼊之后进⾏短时间的休眠,防⽌数据堆积过多。
优化代码:
这⾥要注意的⼀个问题是,下标处理的问题。之前我在测试的过程中报了⼀个数组下标越界的错误,然后调试的过程中发现toIndex的值最后取的有问题,原来是在判断最后余数条的时候出现了逻辑问题,直接将.size()-1当成了toIndex的值 之后将其进⾏了修改未优化前代码:
发现这个版本有点冗余,感觉有点重复了,于是进⾏了优化处理。在碰到问题的时候要多进⾏思考,这样才能够迎难⽽上… Fighting // 装填100条数据 for (int i = 0; i < list.size(); i += 100) { if (i + 100 > list.size()) { // 注意下标问题 toIndex = list.size() - i; } List newList = list.subList(i, i + toIndex); sendList = newList; // 将数据写⼊到Kafka 中 writeToKafka(kafkaProducer, topic, sendList); }
1
2
3
4
5
6
7
8
9
10
11// 装填200条数据 for (int i = 0; i < list.size(); i += 200) { if (i + 200 > list.size()) { // 注意下标问题 toIndex = list.size() - 1; List newList = list.subList(i, i + toIndex); sendList = newList; break; } List newList = list.subList(i, i + toIndex); sendList = newList; writeToKafka(kafkaProducer, topic, sendList); }
1
2
3
4
5
6
7
8
9
10
java中index是什么意思11
12
13
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论