发布于2021-09-26 07:56 阅读(1495) 评论(0) 点赞(29) 收藏(4)
我在HackerRank上遇到了这段代码,通过理解这段代码,我真的把自己弄糊涂了,它确实使用 HashMap 检查数组中元素的唯一性。
现在让您深入了解,我知道如何做到这一点,而且这也很容易。但是这段代码是不同的,我真的需要了解它的实际作用和作用。
int[] seq = new int[]{3,2,1,3};
Integer[] tmp = new Integer[seq.length];
for (int i = 0; i < seq.length; ++i) {
tmp[i] = Integer.valueOf(seq[i]);
}
/* THIS PIECE OF CODE, HOW THIS WORKS AND WHAT IT DOES???*/
if (!((new LinkedHashSet<Integer>(Arrays.asList(tmp))).size() == seq.length)) {
throw new AssertionError("not all values are unique");
}
我所能做的就是将数组转换为 tmp
Arrays.asList(tmp)
2.将其转换为 LinkedHashSet
LinkedHashSet<Integer>(Arrays.asList(tmp))
3.然后找到HashSet的大小
(LinkedHashSet<Integer>(Arrays.asList(tmp))).size()
4.将其与数组 seq 的长度进行比较。
(new LinkedHashSet<Integer>(Arrays.asList(tmp))).size() == seq.length)
如果长度不等于数组seq
,那么元素如何唯一?
这段代码创建了一个LinkedHashSet
包含原始数组的所有元素(装箱int
到Integer
)。
由于 a LinkedHashSet
(与所有Set
s 一样)不包含重复元素,因此当且仅当 a 的大小Set
等于数组的长度时,原始数组才没有重复元素。
如果数组有任何重复项,则 的大小Set
将小于数组的长度,因为在LinkedHashSet
初始化时将消除重复项。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/291383/916e8afa729b88718774/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!