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中,我们如何判断一个未排序数组中是否包含一个特定的值?这在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)
return true;
else
return false;
}

此方法是不正确的,因为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)。

 

java常用函数的更多相关文章

  1. java 多线程总结篇2之——Thread类及常用函数

    此片文章主要总结的是Thread类及相关的基础概念和API,首先需要厘清线程调度中的几个基本概念: 一.线程调度的基本方法 1.调整线程优先级:Java线程有优先级,优先级高的线程会获得较多的运行机会 ...

  2. java基础--常用函数总结

    java基础--常用函数总结 2019-3-16-23:28:01-----云林原创 1.split()字符串分割函数 将一个字符串分割为子字符串,然后将结果作为字符串数组返回. 2.Math.flo ...

  3. Java学习:常用函数接口

    常用函数接口 什么是函数式接口? 函数式接口,@FunctionalInterface,简称FI,简单的说,FI就是指仅含有一个抽象方法的接口,以@Functionalnterface标注 注意:这里 ...

  4. Java中math类的常用函数

    Java中math类的常用函数 在 Java 中 Math 类封装了常用的数学运算,提供了基本的数学操作,如指数.对数.平方根和三角函数等 只要在源文件的顶部加上下面这行代码就不必在数学方法名和常量名 ...

  5. java常用英文解释

    java常用名词解释: OO: object-oriented ,面向对象 OOP:object-oriented programming,面向对象编程 Author:JCC Object:对象JDK ...

  6. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  7. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

  8. C#string常用函数总结

    补充:             1:在C语言里 char占1个字节 而在C#,Java里char占两个字节 数据库里char 中汉占两个字节 字母数字占一个字             2:string ...

  9. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

随机推荐

  1. Python之正则表达式笔记

    概述 概念 Regular Expression 一种文本模式,描述在搜索文本时要匹配的一个或多个字符串 典型场景 数据验证.文本扫描.文本提取.文本替换.文本分割 语法 字面值 普通字符 需转义:\ ...

  2. Layui连接mysql操作CRUD案例

    今天分享的是一个新前端框架Layui,用它来链接数据库实现一下crud的操作. 一:layui简历 layui,是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与 ...

  3. asp.net core-6.Bind读取配置文件到C#实例中

    1,创建asp.net core web应用程序,选择空网站 2,创建一个appsettings.json文件 为什么要叫appsettings.json呢?因为在Iwebhost启动的时候没有添加任 ...

  4. Java Web 深入分析(3) CDN

    CDN (Content Delivery NetWork) 内容分发网络,它是构筑在现有互联网基础上的一种先进的流量分配网络.区别于镜像,相当于是 CDN = 镜像(mirror) + 缓存(Cac ...

  5. siamese跟踪论文思考

    转载自:https://zhuanlan.zhihu.com/p/34222060 通过作者在专栏里面放的几张响应图我们可以看到:SiamFC并不能区分不同的物体,图片上所有具有语义信息的物体都会得到 ...

  6. spring.factories配置文件的工厂模式

    在springboot的各个依赖包下,我们经常看到META-INF/spring.factories这个文件.spring.factories文件的内容基本上都是这样的格式: # Initialize ...

  7. Vue2.0+elementUI使用echarts插件

    1.npm安装echarts:     $ npm install echarts -S 2.html代码: <template> <div id="chartColumn ...

  8. 关于cubic-bezier 贝塞尔曲线的简单了解

    在animation和transition两个属性中,cubic-bezier是控制变化的速度曲线,主要是生成速度曲线的函数 规定用法是: cubic-bezier(<x1>,<y1 ...

  9. 微服务、SOA、ESB比较

    很多时候会听到微服务.SOA.ESB之间有着联系也有着区别,有时候了解了一下,过段时间有混肴模糊了今天看了一篇文章写的很好,特地记录一下. 原文地址:https://mp.weixin.qq.com/ ...

  10. MySQL的启动方式

    MySQL常用启动方式: windows 和linux 上都可以使用 mysql --help|grep my.cnf 过滤查看关于MySQL对应 配置文件my.cnf [root@bqh-118 b ...