java常用函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java常用函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3367字,纯文字阅读大概需要5分钟。
内容图文
if(null == list || list.size() ==0 ){ } list.isEmpty()和list.size()==0 没有区别
isEmpty()判断有没有元素
而size()返回有几个元素
如果判断一个集合有无元素
建议用isEmpty()方法.这清晰,简明
https://blog.csdn.net/Noocl/article/details/77531085(常用复杂函数)
https://www.cnblogs.com/ITyunlin/p/10544999.html(常用复杂函数)
list!=null跟!list.isEmpty()有什么区别?
这就相当与,你要喝水,
前面就是判断是不是连水杯都没有,
后面就是判断水杯里面没有水,
连盛水的东西都没有,
这个水从何而来?
所以一般的判断是
if(list!=null && !list.isEmpty()){
这个里面取list中的值
}else{
做其他处理
}
public static boolean isEmpty(Object str) { return (str == null || "".equals(str)); }
public static void main(String[] args) { String a = new String(); String b = ""; String c = null; if (a.isEmpty()) { System.out.println("String a is empty"); } if (b.isEmpty()) { System.out.println("String b is empty"); } if (c == null) { System.out.println("String c = null"); } if (null == a) { // 编译器直接就提示了Dead code,a指向了一个新对象,肯定不是null了 System.out.println("String a =null"); } if (a == "") { System.out.println("a = ‘‘"); } if (a.equals("")) { //由于a是字符串,字符串的比较需要用equals,不能直接用 == System.out.println("a = ‘‘"); } /*if (c.isEmpty()) { // 这里会报空指针,即null不能使用此方法 System.out.println("c == null and c.isEmpty"); }*/ List<String> list = new ArrayList<>(); //list.add("");if (list.isEmpty()) { System.out.println("list is empty"); } System.out.println(list.size()); } /*Output: String a is empty String b is empty String c = null equals:a = ‘‘ list is empty 0 */
在java中,我们如何判断一个未排序数组中是否包含一个特定的值?这在java中是一个频繁非常实用的操作。那么什么样的方法才是最高效的方式?当然
,这个问题在Stack Overflow也是得票率非常高的一个问答。得票率排在最前的几个答案给出集中不同的方法,但是他们的时间复杂度却相差甚远。
本文将详细的探讨主流的方法,并给出他们各自的时间损耗。
四种方法
List public static boolean useList(String[] arr,String value){ return Arrays.asList(arr).contains(value); } Set public static boolean useSet(String[] arr,String value){ return sets.contains(value) } loop public static boolean useLoop(String[] arr,String value){ for (String s:arr){ if (s.equals(value)) return true ; } return false ; } binarySearch public static boolean useBinarySearch(String[] arr,String value){ int result=Arrays.binarySearch(arr,value); if(result>0) returntrue; elsereturnfalse; }
此方法是不正确的,因为Arrays的binarySearch方法必须应用于有序数组。
性能对比
如果读者熟悉以上java代码片段中出现的集中数据结构,那么可以利用时间复杂度计算标准,
先推算这四种方式的性能对比的大致结果。当然,我们这里不采用这种方式,而是直接运用
如下测试代码对比这四种方式的时间损耗情况。为了使得我们的测试结果更具有代表性,我们
针对不同的数据量做了多组测试。也许,这个测量方式并不精确,但是测量结果是清晰和可
信任的。测试的示例代码如下:
public static void main(String[] args) {
String[] arr = new String[] { “www.”, “tiantian”, “bian”, “ma”, “.com”};
long startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
// use list
useList(arr, “天天编码”);
// use set
//useSet(arr, “天天编码”);
// use loop
//useLoop(arr, “天天编码”);
// use binarySearch
//useBinarySearch(arr, “天天编码”);
long endTime = System.nanoTime();
long duration = endTime = startTime;
System.out.pri}
数组长度 方法 运行耗时 数组长度 方法 运行耗时
5 list 13 100 list 50
5 set 72 100 set 668
5 loop 5 100 loop 47
5 binarySearch 100 inarySearch 8
1k list 112 10k list 1590
1k set 2055 10k set 23819
1k loop 99 10k loop 1526
1k binarySearch 12 10k binarySearch 12
总结
参照这个表格,结论已经很明显了。最简单的Loop方法比其他任何使用集合容器的方法都更加高效。
很多的开源项目代码显示,很多Java开发者喜欢使用第一种方法(list),实际上,该方法的性能并不好。
该方法把一个数组的元素转移到一个新的集合容器中,显然,在所有的元素转移完成之前,新的集合容器处于不可用的状态。
该表格还反映出一个事实:Arrays.binarySearch()方法的性能是最好的,特别是对于数组长度很大的数组。
但是该方法要求数组必须有序,这限制住了该方法的使用场景,本文实例代码中的数组并不是有序的,
所以不应该使用该方法。
实际上,如果你确实需要高效地检查某个特定值是否被包含在某些数组或者集合容器中,
你应该考虑使用有序列表或有序树,这些集合容器查找特定值的时间复杂度是 O(log(n))。
当然,如果使用哈希集合,时间复杂度下降为 O(1)。
原文:https://www.cnblogs.com/dianzan/p/11275783.html
内容总结
以上是互联网集市为您收集整理的java常用函数全部内容,希望文章能够帮你解决java常用函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。