栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java util包下的Objects工具

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java util包下的Objects工具

Java util包下的Objects工具 描述

如下为笔者在开发过程中遇到的一些工具类,其中equals方法及isNull nonNull比较常用,故将Objects类的工具方法都进行一个总结。供大家参考及自己记录总结

1.equals(Object a, Object b)

主要用于两个对象的比较,和我们自己写的equals方法差别较小,多了判空和地址的直接比较,调用时避免了我们自己判空的繁琐操作。

源码如下:

public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}
2.deepEquals(Object a, Object b)

主要也是用于两个对象的比较,比equals(Object a, Object b)强大的是可以对两个数组进行判断,故在数组判断时可以调用。

PS:多维数组也可进行比较

源码如下:

public static boolean deepEquals(Object a, Object b) {
    if (a == b)
        return true;
    else if (a == null || b == null)
        return false;
    else
        return Arrays.deepEquals0(a, b);
}
3.hashCode(Object o)

获取参数传入的对象的hash值,假如传入的是Null,则返回0.

源码如下:

public static int hashCode(Object o) {
    return o != null ? o.hashCode() : 0;
}
4.hash(Object… values)

获取Object数组的hash值

源码如下:

public static int hash(Object... values) {
    return Arrays.hashCode(values);
}
5.toString(Object o)

返回Object对象的toString方法。假如传入的是null,则返回值为字符串"null"

源码如下:

public static String toString(Object o) {
    return String.valueOf(o);
}
6.toString(Object o, String nullDefault)

返回Object对象的toString方法。假如传入的是null,则返回值为参数二字符串nullDefault

源码如下:

public static String toString(Object o, String nullDefault) {
    return (o != null) ? o.toString() : nullDefault;
}
7.requireNonNull(T obj)

对传入的对象进行判空操作,假如为空,则直接抛出异常,假如不为空,则返回对象本身。

源码如下:

public static  T requireNonNull(T obj) {
    if (obj == null)
        throw new NullPointerException();
    return obj;
}
8.requireNonNull(T obj, String message)

对传入的对象进行判空操作,假如为空,则直接抛出异常,假如不为空,则返回对象本身,第二个参数为传入异常message。

源码如下:

public static  T requireNonNull(T obj, String message) {
    if (obj == null)
        throw new NullPointerException(message);
    return obj;
}
9.isNull(Object obj)

对传入的对象进行判空

源码如下:

public static boolean isNull(Object obj) {
    return obj == null;
}
10.nonNull(Object obj)

对传入的对象进行非空判断

源码如下:

public static boolean nonNull(Object obj) {
    return obj != null;
}
11.compare(T a, T b, Comparator c)

对传入的对象a和对象b进行比较,必须是同一个类的实例,且参数3为一个比较器Comparator

源码如下

public static  int compare(T a, T b, Comparator c) {
    return (a == b) ? 0 :  c.compare(a, b);
}

示例:

import lombok.*;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@EqualsAndHashCode
@Builder
public class Student implements KeyListbase{

    @ListIndex(0)  private String name;
    @ListIndex(1)  private Long id;
    @ListIndex(2)  private Double point;

    public Student(List list){
        init(list);
    }

}
 
@Test
public void test2(){
    Student student1 = Student.builder().id(11L).name("wangdong").point(60D).build();
    Student student2 = Student.builder().id(12L).name("tangy").point(69D).build();
    int compare = Objects.compare(student1, student2, (o1, o2) -> {
        double v = o1.getPoint() - o2.getPoint();
        return (int) v;
    });//返回值为两人分数的比较,假如为正数,那么a对象的分数大于b对象。反则则b大于a。还可以通过自定义比较器实现其它比较功能
    System.out.println(compare);
}
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号