精华内容
下载资源
问答
  • 首先来看一下工具StringUtils的判断方法:一种是org.apache....这两种StringUtils工具类判断对象是否为空是有差距的:StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判...

    首先来看一下工具StringUtils的判断方法:

    一种是org.apache.commons.lang3包下的;

    另一种是org.springframework.util包下的。这两种StringUtils工具类判断对象是否为空是有差距的:

    StringUtils.isEmpty(CharSequence cs); //org.apache.commons.lang3包下的StringUtils类,判断是否为空的方法参数是字符序列类,也就是String类型

    StringUtils.isEmpty(Object str); //而org.springframework.util包下的参数是Object类,也就是不仅仅能判断String类型,还能判断其他类型,比如Long等类型。

    从上面的例子可以看出第二种的StringUtils类更实用。

    下面来看一下org.apache.commons.lang3的StringUtils.isEmpty(CharSequence cs)源码:

    public static boolean isEmpty(final CharSequence cs) {

    return cs == null || cs.length() == 0;

    }

    接下来是org.springframework.util的StringUtils.isEmpty(Object str)源码:

    public static boolean isEmpty(Object str) {

    return (str == null || "".equals(str));

    }

    基本上判断对象是否为空,StringUtils.isEmpty(Object str)这个方法都能搞定。

    接下来就是判断数组是否为空

    list.isEmpty(); //返回boolean类型。

    判断集合是否为空

    例1: 判断集合是否为空:

    CollectionUtils.isEmpty(null): true

    CollectionUtils.isEmpty(new ArrayList()): true

    CollectionUtils.isEmpty({a,b}): false

    例2:判断集合是否不为空:

    CollectionUtils.isNotEmpty(null): false

    CollectionUtils.isNotEmpty(new ArrayList()): false

    CollectionUtils.isNotEmpty({a,b}): true

    2个集合间的操作:

    集合a: {1,2,3,3,4,5}

    集合b: {3,4,4,5,6,7}

    CollectionUtils.union(a, b)(并集): {1,2,3,3,4,4,5,6,7}

    CollectionUtils.intersection(a, b)(交集): {3,4,5}

    CollectionUtils.disjunction(a, b)(交集的补集): {1,2,3,4,6,7}

    CollectionUtils.disjunction(b, a)(交集的补集): {1,2,3,4,6,7}

    CollectionUtils.subtract(a, b)(A与B的差): {1,2,3}

    CollectionUtils.subtract(b, a)(B与A的差): {4,6,7}

    以上所述是小编给大家介绍的Java中判断对象是否为空的方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!

    展开全文
  • JDK 1.7中,提供了一个对象工具类 java.util.Objects, 这个类中提供了封装好的非空判断,Objects 类是一个终类,并且它里面的方法都是 static 修饰的。 1. nonNull 判断对象不等于: if (Objects.nonNull(obj)){ ...

    Objects

    JDK 1.7中,提供了一个对象工具类 java.util.Objects, 这个类中提供了封装好的非空判断,Objects 类是一个终类,并且它里面的方法都是 static 修饰的。在这里插入图片描述

    1. nonNull

    注:这个方法是nonNull是JDK1.8的方法。

    判断对象不等于空:

    if (Objects.nonNull(obj)){
        // 判断不等于空
    }
    

    2. isNull

    注:这个方法是isNull是JDK1.8的方法。

    判断对象等于空:

    if (Objects.isNull(obj)){
        // 判断等于空
    }
    

    3. requireNonNull

    空值检查 并不等同于 空值判断,空值判断是根据对象是否为空而执行不同的分支策略,而空值检查是要求对象不能为空。

    public static <T> T requireNonNull(T obj) {
        if (obj == null)
            throw new NullPointerException();
        return obj;
    }
    

    此方法主要用于在 方法构造函数 中进行参数验证,例如:

    public class Foo {
      private final Bar bar;
    
      public Foo(Bar bar) {
        Objects.requireNonNull(bar);
        this.bar = bar;
      }
    }
    

    该方法还提供了一个重载方法 requireNonNull(T obj, String message),可以自定义抛出NPE信息

    public class Foo {
      private final Bar bar;
    
      public Foo(Bar bar) {
        Objects.requireNonNull(bar, "bar must not be null");
        this.bar = bar;
      }
    }
    

    使用 requireNonNull 的优势:

    • 提高代码的可读性。
    • 在对象创建的上下文抛出NPE,可以更好的在日志中反应出问题所在。
    • 不需要在别的地方再进行重复的非空判断检查。
    展开全文
  • import java.util.Collection;import java.util.Iterator;.../**** @author biehl** @date 2018年7月31日下午2:40:40** @Notes 判断是否为空的工具栏,如果不使用StringUtils的jdk的工具类,可以自行封装**/pu...

    package com.bie.util;

    import java.util.Collection;

    import java.util.Iterator;

    import java.util.Map;

    /**

    *

    * @author biehl

    *

    * @date 2018年7月31日下午2:40:40

    *

    * @Notes 判断是否为空的工具栏,如果不使用StringUtils的jdk的工具类,可以自行封装

    *

    */

    public class ObjectUtils {

    /**

    * 判断字符串不为空

    * @param str

    * @return

    */

    public static boolean notEmpty(String str){

    //StringUtils.isNotEmpty(str);

    return str != null && !"".equals(str);

    }

    /**

    * 判断字符串不为空

    * jdk StringUtils工具类实现如下所示

    * @param str

    * @return

    */

    public static boolean isNotEmpty(String str){

    return !isEmpty(str);

    }

    /**

    * 判断字符串为空

    * @param str

    * @return

    */

    public static boolean isEmpty(String str){

    return str == null || str.length() == 0;

    }

    /**

    * 集合判断是否为空

    * @param collection 使用泛型

    * @return

    */

    public static boolean notEmpty(Collection collection){

    if(collection != null){

    Iterator iterator = collection.iterator();

    if(iterator != null){

    while(iterator.hasNext()){

    Object next = iterator.next();

    if(next != null){

    return true;

    }

    }

    }

    }

    return false;

    }

    /**

    * map集合不为空的判断

    * @param map 使用泛型,可以传递不同的类型参数

    * @return

    */

    public static boolean notEmpty(Map map){

    return map != null && !map.isEmpty();

    }

    /**

    * byte类型数组判断不为空

    * @param t

    * @return

    */

    public static boolean notEmpty(byte[] t){

    return t != null && t.length > 0;

    }

    /**

    * short类型数组不为空判断

    * @param t

    * @return

    */

    public static boolean notEmpty(short[] t){

    return t != null && t.length > 0;

    }

    /**

    * 数组判断不为空,没有泛型数组,所以还是分开写吧

    * @param t 可以是int,short,byte,String,Object,long

    * @return

    */

    public static boolean notEmpty(int[] t){

    return t != null && t.length > 0;

    }

    /**

    * long类型数组不为空

    * @param t

    * @return

    */

    public static boolean notEmpty(long[] t){

    return t != null && t.length > 0;

    }

    /**

    * String类型的数组不为空

    * @param t

    * @return

    */

    public static boolean notEmpty(String[] t){

    return t != null && t.length > 0;

    }

    /**

    * Object类型数组不为空

    * @param t

    * @return

    */

    public static boolean notEmpty(Object[] t){

    return t != null && t.length > 0;

    }

    /**

    *

    * @param o

    * @return

    */

    public static boolean notEmpty(Object o){

    return o != null && !"".equals(o) && !"null".equals(o);

    }

    public static void main(String[] args) {

    //String str = "";

    //1、判断字符串是否为空notEmpty()方法

    /*if(ObjectUtils.notEmpty(str)){

    System.out.println("字符串 " + str + " 不为空......");

    }else{

    System.out.println("字符串 " + str + "为空......");

    }*/

    //2、判断字符串是否为空isNotEmpty()方法

    /*if(ObjectUtils.isNotEmpty(str)){

    System.out.println("字符串 " + str + " 不为空......");

    }else{

    System.out.println("字符串 " + str + "为空......");

    }*/

    //3、集合判断是否为空,list和set实现Collection

    /*List list = new ArrayList();

    //list.add("hello");

    if(ObjectUtils.notEmpty(list)){

    System.out.println("List集合不为空");

    }else{

    System.out.println("List集合为空");

    }*/

    /*Set set = new HashSet();

    set.add("hello");

    if(ObjectUtils.notEmpty(set)){

    System.out.println("set集合不为空");

    }else{

    System.out.println("set集合为空");

    }*/

    //4、map集合接口,需要写单独的判读是否为空的方法

    /*Map map = new HashMap();

    //map.put("hello", "hello world");

    if(ObjectUtils.notEmpty(map)){

    System.out.println("map集合不为空");

    }else{

    System.out.println("map集合为空");

    }*/

    //5、数组判断不为空

    /*int[] a = new int[]{1,2,3,4,5};

    if(ObjectUtils.notEmpty(a)){

    System.out.println("int类型数组不为空");

    }else{

    System.out.println("int类型数组为空");

    }*/

    /*byte[] b = new byte[]{1,2,3,4,5};

    if(ObjectUtils.notEmpty(b)){

    System.out.println("byte类型数组不为空");

    }else{

    System.out.println("byte类型数组为空");

    }

    short[] c = new short[]{1,2,3,4,5};

    if(ObjectUtils.notEmpty(c)){

    System.out.println("short类型数组不为空");

    }else{

    System.out.println("short类型数组为空");

    }

    long[] d = new long[]{1,2,3,4,5};

    if(ObjectUtils.notEmpty(d)){

    System.out.println("long类型数组不为空");

    }else{

    System.out.println("long类型数组为空");

    }

    String[] e = new String[]{"hello","world","lisi","zhangsan"};

    if(ObjectUtils.notEmpty(e)){

    System.out.println("String类型数组不为空");

    }else{

    System.out.println("String类型数组为空");

    }

    Object[] a = new Object[]{1,2,3,4,5};

    if(ObjectUtils.notEmpty(a)){

    System.out.println("Object类型数组不为空");

    }else{

    System.out.println("Object类型数组为空");

    }*/

    }

    }

    展开全文
  • 什么输出not null,是因为null判断是否对List集合分配内存空间,不是List集合里面内容是否为空 案例测试2 isEmpty() 是判断List内容是否为空,或者使用(list.size() == 0)进行判断都可以 案例测试3 new 一个...

    在Java开发中,判断list集合为空还是为null的区别

    案例测试1

    在这里插入图片描述
    为什么输出not null,是因为null判断的是否对List集合分配内存空间,为不是List集合里面内容是否为空

    案例测试2

    在这里插入图片描述
    isEmpty() 是判断List内容是否为空,或者使用(list.size() == 0)进行判断都可以

    案例测试3

    在这里插入图片描述

    在这里插入图片描述new 一个Rfile对象后,判断对象中的List是否为空,出现异常,这是因为List指向是null,所以使用isEmpty()和size()的前提是,list是一个空集合

    结论

    所以判断结合内容不为空采用:if(list!=null&&!list.isEmpty())的方法去取list里面的值

    展开全文
  • 一个list集合内有name,sex字段,需要判断list中是否有name有叫张三的人,如果有返回true boolean b = list.stream().filter(m -> m.getName().equals("张三")).findAny().isPresent(); boolean b = list....
  • Java判断对象是否为空(包括null ,"")的方法本文实例大家分享了Java判断对象是否为空的具体代码,供大家参考,.../*** 判断对象是否为空** @author Rex**/public class EmptyUtil{/*** 判断对象为空** @param obj* ...
  • 下面是一个通用的方法,判断字符串是否为空集合是否为空,数组是否为空: /** * 判断对象或对象数组中每一个对象是否为空: 对象null,字符序列长度0,集合类、Mapempty * * @param obj * @return */ public...
  • } } JDK1.8只是多出了一些条件判断,当初始化容量0的时候,依然只引用了一个全局静态数组,静态保证全局唯一,提高资源利用率 1.1.3、通过Collection创建ArrayList JDK1.7 /** * Constructs a list containing ...
  • package common; import java.util.List; import java.util.Map;... * @since JDK1.7 */ public class ObjectUtils { /** * * 方法描述 封装返回结果集 * * @param code * @param msg
  • JDK5-JDK8的区别

    2021-02-27 17:11:55
    jdk5新特性1、自动装箱和拆箱2、枚举3、静态导入4、可变参数5、內省是Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性那么,那我们可以通过getName,setName来得到其值或者设置新的值。通过getName/...
  • JDK8源码】LinkedList集合

    千次阅读 多人点赞 2021-03-12 14:19:59
    JDK8源码】LinkedList集合LinkedList特性LinkedList数据结构源码分析层次结构属性构造函数常用方法循环 LinkedList特性 双向链表,增删快,随机访问慢(相对ArrayList) 泛型类,可存储任意类型 离散空间,不需要...
  • } } 这段代码写完后,逻辑没错,但是不是判断有些多余,因为这里使用了增强for循环,这样的话,若list为空,则不会进入循环,若这里使用的是普通的for循环,则需要进行判断,否则list为空会报指针异常;...
  • jdk8源码系列-集合 事前准备 环境搭建 搭建JDK8环境可参考另一篇博客IDEA搭建JDK源码 本人学习的源码 https://gitee.com/bean-chan/jdk8 集合目录 ArrayList(Current) [LinkedList–待完善](javascript:;...
  • 一、前言jdk对于大部分类(ArrayList、HashSet、Vector、ConcurrentLinkedQueue)集实现判断contains方法,都是遍历类集对象进行比较是否相等(equals值是否相等),源码分析如下:ArrayList源码:HashSet源码:Vector...
  • ArrrayList(jdk8) java.util.RandomAccess 接口,表示 ArrayList 支持快速的随机访问 特点 容量不固定,想放多少放多少(有最大阈值,但一般达不到) 有序的(元素输出顺序与输入顺序一致) 元素可以 null ...
  • 合并userLoginLogList所有areaId,并去除非空值:List areaIds = userLoginLogList.stream().map(UserLoginLogStatisticsVO::getAreaId).filter(x -> x !=null ).collect(Collectors.toList());...
  • 所以就会用到JDK8中的方法, 有个疑问,当我们取值的时候 是否会碰到指针呢 ? 答案是:不会 但是也会有另外一个问题 上例子 public static void main(String[] args) { User user1 = new User();
  • JDK8新特性

    2021-02-23 23:37:32
    博客文章汇总:博客目录索引(持续更新) 一、Lambda表达式 1.1、认识与使用Lambda表达式 JDK8推出的一个匿名函数,使用Lambda表达式可以让代码变得更加简洁、灵活。 首先来看一个例子:普通方法重写、Lambda表达式、...
  • 就List而言,据我所知线程安全的几个类Vector ,SynchronizedList ,CopyOnWriteArrayList, 下面一一讲解下底层实现。Vector 源码重要成员// 底层数组元素protected Object[] elementData;// 数组存储的元素大小...
  • java的集合是常用的类,也是面试官非常喜欢的...首先看一下List类的体系结构,JDK版本1.8.0List体系List体系中有三个我们常用的类:ArrayList、Vector、LinkedList。下面主意分析这三个类ArrayListArrayList内部使...
  • ArrayList 无参初始化时,Java 7 是直接初始化 10 的大小,Java 8 去掉了这个逻辑,初始化时是数组,在第一次 add 时才开始按照 10 进行扩容,下图是源码的差异对比图: List 其它方面 java7 和 8 并没有改动。 2...
  • 只要能够理解普通集合怎么操作的,那么使用Stream流操作时,就是要看对于API的使用是否熟悉,其实这个才是关键,只有理解了collectingAndThen、toCollection、JDK8的匿名函数这样内容,才能看懂这个式子。...
  • 集合遍历对于对象的处理等等 一.原生的用法 实现接口 public class FunctionObj implements Function { @Override public Object apply(Object t) { return "原生的用法实现接口"+t; } } public class Test {...
  • JDK Epoll轮询bug

    2021-02-02 14:33:27
    前面讲到了epoll的一些机制,与select和poll等传统古老的IO多路复用机制的一些区别,这些区别实质可以总结一句话,就是epoll将重要的基于事件的fd集合放在了内核中来完成,因为内核是高效的,所以很多关于fd事件...
  • jdk8Jdk 8 新特性Lambda表达式Java匿名内部类public class SwingTest {public static void main(String[] args) {System.out.println("hello world");JFrame jFrame = new JFrame("My Jframe");JButton jButton = ...
  • 流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解一种高级集合。 众所周知,集合操作非常麻烦,若要对集合进行筛选、投影,需要写大量的代码,而流是以声明的形式操作集合,它就像SQL语句,...
  • Java集合源码解析-ConcurrentHashMap(JDK8

    千次阅读 多人点赞 2021-07-05 13:49:31
    8 并发而生的 ConcurrentHashMap(Java 8) 8.1 数据结构 Java 7实现并发访问,引入了Segment这一结构,实现了分段锁,理论上最大并发度与Segment个数相等。 Java 8取消了基于 Segment 的分段锁思想,改用CAS + ...
  • JDK8新特性讲解

    2021-11-08 15:42:01
    1. JDK8之default关键字 在jdk1.8之前接口里面是只能有抽象方法,不能有任何方法的实现,在jdk1.8里面打破了这个定义,引入了default关键字,使用default修饰方法,可以在接口里面定义具体的方法实现,即接口的默认...
  • jdk8新特性

    2021-03-21 20:02:55
    JDK8 Lambda表达式 // 1. 不需要参数,返回值 5 {}只有一行代码,可以省略 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值,()只有一个参数可以省略 x -> 2 * x // 3. 接受2个参数(数字),并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,165
精华内容 24,866
关键字:

判断集合是否为空jdk8