IntStream Java的出现次数
发布时间:2020-05-25 00:04:07 所属栏目:Java 来源:互联网
导读:我想定义一个名为countRepeats的方法,它接受一个数字列表0到9,并返回相邻重复字母的出现次数. 例如, 测试用例1:数组{0,1,2,2,1,2,2,1,3,3,1}有三次重复数字 测试用例2:数组{0,1,1,1,1,2}有一次出现 以下是我的代码: ListInteger intlist = new ArrayListIn
|
我想定义一个名为countRepeats的方法,它接受一个数字列表0到9,并返回相邻重复字母的出现次数. 例如, 测试用例1:数组{0,1,2,3,1}有三次重复数字 测试用例2:数组{0,2}有一次出现 以下是我的代码: List<Integer> intlist = new ArrayList<Integer>();
int [] array = new int[]{};
while(sc.hasNext()){
intlist.add(sc.nextInt());
array = intlist.stream().mapToInt(i->i).toArray();
}
System.out.println("Number of occurrences: " + countRepeats(array));
public static long countRepeats(int [] array){
return IntStream.range(0,array.length-1)
.filter(n -> array[n] > 0)
.filter(i -> (array[i] == array[i+1]))
.peek(System.out::println)
.count();
}
但是,我的测试用例2没能得到预期的结果.任何人都可以启发我吗? 解决方法在原始海报的解决方案的基础上,如果我们检查重复对是否是更大序列的一部分(并检查数组的结尾),那么我们可以避免装箱.import java.util.*;
import java.util.stream.*;
interface CountRepeats {
static void main(String[] args) {
test(0,1);
test(0,2);
}
static void test(int... digits) {
System.err.println(
countRepeats(digits)+": "+Arrays.toString(digits)
);
}
static long countRepeats(int[] array) {
return IntStream.range(0,array.length-1)
.filter(i ->
array[i] == array[i+1] && (
i+2 >= array.length ||
array[i] != array[i+2]
)
)
.count();
}
}
这不是溪流的强项. (线 i+2 >= array.length || 真的应该 i >= array.length-2 || 避免导致ArrayOutOfBoundsException的整数溢出.旧语言及其破碎的整数…) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Java – 使用For循环创建多个线程
- java – SEVERE:配置org.apache.catalina.deploy.Applicat
- Nutch:用Java调用,而不是命令行?
- 详解Java中实现SHA1与MD5加密算法的基本方法
- 多线程 – Delphi类变量是否具有全局或线程本地存储?
- Java的面向对象编程基本概念学习笔记整理
- Java:BufferedReader的readLine()中的IOEXceptions是什么?
- Java集合类的组织结构和继承、实现关系详解
- java – Spring ScheduledTask – 启动/停止支持?
- java面试题――详解HashMap和Hashtable 的区别
