资讯专栏INFORMATION COLUMN

Collections 里面的几个你还不知道的方法

Shimmer / 822人阅读

摘要:但这个类当中还有几个方法,估计你到现在还不知道,还在自己手写循环来实现。这个方法检查两个集合是否没有相同元素。这个方法将集合中的指定元素全部替换成新元素。这个方法帮你将一个对象转换为对象。

java.util.Collections 这个类你可能知道,也可能经常用里面的像 sort()reverse() 这样的方法。但这个类当中还有几个方法,估计你到现在还不知道,还在自己手写循环来实现。

✦ boolean disjoint(Collection c1, Collection c2)`

这个方法检查两个集合是否没有相同元素。如果存在相同元素则返回 false,否则返回 true。

✦ emptyList() / emptyMap() / emptySet()

这些方法创建空的 List / Map / Set。有人会问,我直接用 new ArrayList() 不就好了?其实区别在于,这些方法创建的空集合都是保证永远为空,不允许添加元素进去的。

✦ void fill(List list, T obj)

这个方法用一个指定的对象来替换集合中的所有元素。比如你要对某个集合“清零”,同时保持集合的元素数量不变,那么可以用这个方法。

✦ boolean replaceAll(List list, T oldVal, T newVal)

这个方法将集合中的指定元素全部替换成新元素。

✦ ArrayList list(Enumeration e)

这个方法帮你将一个 Enumeration 对象转换为 ArrayList 对象。比如说我们要得到 HttpServletRequest 对象中所有的参数名,就可以写:

ArrayList paramNames = Collections.list(request.getParameterNames());
✦ min(Collection coll) / max(Collection coll) / min(Collection coll, Comparator comp) / max(Collection coll, Comparator comp)

这些方法用来从集合中取最大最小值,你还可以传入自定义的用来比较元素大小的方法。

✦ void rotate(List list, int distance)

这个方法用来“滚动”集合的元素,比如当 distance 为 1 时,表示所有元素向右滚动一位,其中最后一个元素滚动到第一位。

✦ void swap(List list, int i, int j)

这个方法用来交换 List 中第 i 位和第 j 位的元素。

✦ int frequency(Collection c, Object o)

这个方法返回指定的元素在集合中出现了多少次。如果参数 o 为 null 的话,它同样会返回 null 元素的个数。

✦ List nCopies(int n, T o)

这个方法返回包含 n 个相同元素的 List。注意 List 内容是不可变的。有人会问,那这个方法有什么用呢?你可以用它结合 List.addAll() 来填充一个可变的 List。比如:

List list = new ArrayList<>();
...
list.addAll(Collections.nCopies(10, "A")); // 在 list 的末尾添加 10 个 "A"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68629.html

相关文章

  • [译]14个你可能不知道JavaScript调试技巧

    摘要:在控制台中使用,当到达传入的函数时,代码将停止。但除了私有和匿名函数这可能是找到调试函数的最快方法。在控制台中输入,当调用时,将以调试模式停止屏蔽不相关代码现在,我们经常在应用中引入几个库或框架。 译者:SlaneYang原文:https://raygun.com/javascript-debugging-tips 以更快的速度和更高的效率来调试JavaScript 熟悉工具可以让工具...

    CODING 评论0 收藏0
  • 自学 JAVA 点建议

    摘要:自制力好的人,估计在保存后会翻出来看两眼,过几天又忘得一干二净了。多思考学会思考,养成多思考的习惯。以项目来驱动自己学习,整个过程将会有趣得多。后语以上就是我对自学的几点建议,希望对你们有帮助。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 showImg(https://segmentfault.com/img/remote/1460000018208...

    klinson 评论0 收藏0
  • 8 个你可能不知道 Docker 知识

    摘要:在容器力所不能及的地方,虚拟机可以大显身手。可以避免产生一直是固定基础设置的狂热爱好者。 Docker 这个工具已经出现很长一段时间了,但是可能还有很多人对 Docker 的概念不太清楚,因此这次翻译 8 个你可能不知道的 Docker 知识 这篇文章,和大家介绍一下生产环境中的 Docker 用例。 自从上世纪 90 年代硬件虚拟化被主流的技术广泛普及之后,对数据中心而言,...

    Nino 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<