博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Guava学习笔记-预览迭代器中的下一个元素
阅读量:6037 次
发布时间:2019-06-20

本文共 1144 字,大约阅读时间需要 3 分钟。

hot3.png

###问题描述:

去除List中连续的重复元素
["1","1","1","2”,"2","3","4"]->["1","2","3","4"]
[]->[]

###原来

List
result = Lists.newArrayList();Iterator
iterator = source.iterator();String current = null;while (iterator.hasNext()) { if (current == null) { current = iterator.next(); } result.add(current); while (iterator.hasNext()) { String next = iterator.next(); if (current.equals(next)) { continue; } current = next; break; }}if (current != null && !result.get(result.size() - 1).equals(current)) { result.add(current);}

因为需要在下一个元素与当前元素不相等的时候保留上一个元素,所以写起来比较复杂用了两层循环,并且容易写错,改了好几遍才通过测试用例

###使用Guava

List
result = Lists.newArrayList();PeekingIterator
iterator = Iterators.peekingIterator(source.iterator());String current = null;while (iterator.hasNext()) { if (!iterator.peek().equals(current)) { current = iterator.next(); result.add(current); } else { iterator.next(); }}

使用PeekingIterator,代码精简许多,也更易于理解,也不容易写错

需要注意的是,如果没有下一个元素了,使用iterator.peek()会抛出异常

转载于:https://my.oschina.net/u/565871/blog/608393

你可能感兴趣的文章
关于Repository模式
查看>>
SQL Server2014 SP2新增的数据库克隆功能
查看>>
elastic-job详解(一):数据分片
查看>>
【安装】Matlab7.0简介及安装
查看>>
python发送邮件源码 | the5fire的技术博客
查看>>
如何快速学习一个开源项目源码?
查看>>
PE框架学习之道:PE框架——发送报文流程
查看>>
为什么说 GraphQL 可以取代 REST API?
查看>>
语音交互新突破:搜狗语音合成技术将为你定制AI助理的声音
查看>>
一图读懂H3C UniServer R6900 G3服务器
查看>>
青海25项措施发展中藏医药 省领导任联席会议召集人
查看>>
海外华人华侨音乐家汇聚2019上海侨界新年音乐会
查看>>
全国计算机二级考级即将开始,你准备好了吗
查看>>
博客求职简历上用javascript做个定位微地图,面试通过
查看>>
美丽的诗句 撩妹首选哦!
查看>>
Vue 2.0 构建单页应用最佳实战
查看>>
JTalk Online:面试官教你快速成为 leader 最欣赏的技术人
查看>>
Java并发编程笔记之FutureTask源码分析
查看>>
使用LeanCloud快速开发一款小程序
查看>>
MMA冠军Rory MacDonald:比特币现金(BCH)是真正的比特币
查看>>