java项目常用的工具类

目录


    当我们在项目中进行开发的时候,往往会有很多工具类,有的是为了简化操作,有的是业务需要而进行封装。当代码量累计起来之后,发现工具类越来越多,而且每位小伙伴的编程习惯和知识构成不一样,往往导致一个工具类封装了之后很少使用和维护。甚至很多时候对共工具类进行了过度封装,这时不妨看看下面的基于JDK等已经封装好的工具类,直接上手使用即可。
    

一、Objects工具类常用方法

1、 比较两个对象是否相等 equals

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

2、toString,如果传入对象为空则返回默认值

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

3、验证对象不为空,如果为空则按照默认信息抛出空指针异常

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

4、 判断对象是否为空

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

5、判断对象是否不为空

 public static boolean nonNull(Object obj) {
        return obj != null;
    }

6、计算并返回多个对象的哈希码的组合

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

    

二、CollectionUtils工具类常用方法

    CollectionUtils 是 Apache Commons Collections 库中的一个非常有用的工具类,它提供了一系列静态方法来简化集合的操作。以下是一些 CollectionUtils 的常用方法及其用途:

package org.apache.commons.collections4;

    

1、 判断集合是否为空

  public static boolean isEmpty(final Collection<?> coll) {
      return coll == null || coll.isEmpty();
  }

2、判断集合是否不为空

public static boolean isNotEmpty(final Collection<?> coll) {
    return !isEmpty(coll);
}

3、 反转给定数组的顺序

public static void reverseArray(final Object[] array) {
    int i = 0;
    int j = array.length - 1;
    Object tmp;

    while (j > i) {
        tmp = array[j];
        array[j] = array[i];
        array[i] = tmp;
        j--;
        i++;
    }
}

4、向指定的集合中添加多个元素,如果集合为 null,则不进行任何操作。

 public static <C> boolean addAll(final Collection<C> collection, final C... elements) {
        boolean changed = false;
        for (final C element : elements) {
            changed |= collection.add(element);
        }
        return changed;
    }

maven引入方式

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

    

三、MapUtils工具类常用方法

    MapUtils 是 Apache Commons Collections 库中的一个实用工具类,它提供了一系列用于操作 Map 对象的方法。以下是 MapUtils 的一些常用方法及其用途:

package org.apache.commons.collections4;

    

1、 将map中的key与value交换位置

public static <K, V> Map<V, K> invertMap(final Map<K, V> map) {
    final Map<V, K> out = new HashMap<>(map.size());
    for (final Entry<K, V> entry : map.entrySet()) {
        out.put(entry.getValue(), entry.getKey());
    }
    return out;
}

2、如果map为空则返回一个空map,否则返回map本身

public static <K,V> Map<K,V> emptyIfNull(final Map<K,V> map) {
    return map == null ? Collections.<K,V>emptyMap() : map;
}

3、判断map是否为空

public static boolean isEmpty(final Map<?,?> map) {
    return map == null || map.isEmpty();
}

4、判断map是否不为空

public static boolean isNotEmpty(final Map<?,?> map) {
    return !MapUtils.isEmpty(map);
}

5、返回一个线程安全的map

public static <K, V> Map<K, V> synchronizedMap(final Map<K, V> map) {
    return Collections.synchronizedMap(map);
}

maven引入

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.5.0-M2</version>
</dependency>

    

四、ArrayUtils工具类常用方法

    ArrayUtils 是 Apache Commons Lang 库中的一个实用工具类,它提供了一系列用于操作数组的方法。这个类的工具方法可以帮助开发者处理数组,包括数组的创建、搜索、比较、转换和其他实用操作。以下是 ArrayUtils 的一些常用方法及其用途:

package org.apache.commons.lang3;

    

1、将数组转为map

入参要求:

数组中元素为key-value形式,或包含元素是至少两个元素的 Array,其中第一个元素用作 key,第二个元素用作 value。

public static Map<Object, Object> toMap(final Object[] array) {
    if (array == null) {
        return null;
    }
    final Map<Object, Object> map = new HashMap<>((int) (array.length * 1.5));
    for (int i = 0; i < array.length; i++) {
        final Object object = array[i];
        if (object instanceof Map.Entry<?, ?>) {
            final Map.Entry<?,?> entry = (Map.Entry<?,?>) object;
            map.put(entry.getKey(), entry.getValue());
        } else if (object instanceof Object[]) {
            final Object[] entry = (Object[]) object;
            if (entry.length < 2) {
                throw new IllegalArgumentException("Array element " + i + ", '"
                    + object
                    + "', has a length less than 2");
            }
            map.put(entry[0], entry[1]);
        } else {
            throw new IllegalArgumentException("Array element " + i + ", '"
                    + object
                    + "', is neither of type Map.Entry nor an Array");
        }
    }
    return map;
}

2、反转给定数组的顺序

public static void reverse(final Object[] array) {
    if (array == null) {
        return;
    }
    reverse(array, 0, array.length);
}

3、判断数组是否为空

public static boolean isEmpty(final Object[] array) {
    return getLength(array) == 0;
}

4、判断数组是否不为空

public static <T> boolean isNotEmpty(final T[] array) {
    return !isEmpty(array);
}

maven 引入方式

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version> <!-- 请使用最新版本 -->
</dependency>

    

五、Collections工具类常用方法

    Collections 是 Java 集合框架(Java Collections Framework,JCF)中的一个工具类,位于 java.util 包中。它提供了一系列静态方法,用于操作和返回集合,特别是对集合进行各种有用的操作,如排序、搜索、替换、同步和迭代等。以下是 Collections 类的一些常用方法及其用途:

package java.util;

    

1、反转指定列表中元素的顺序

public static void reverse(List<?> list) {
    int size = list.size();
    if (size < REVERSE_THRESHOLD || list instanceof RandomAccess) {
        for (int i=0, mid=size>>1, j=size-1; i<mid; i++, j--)
            swap(list, i, j);
    } else {
        // instead of using a raw type here, it's possible to capture
        // the wildcard but it will require a call to a supplementary
        // private method
        ListIterator fwd = list.listIterator();
        ListIterator rev = list.listIterator(size);
        for (int i=0, mid=list.size()>>1; i<mid; i++) {
            Object tmp = fwd.next();
            fwd.set(rev.previous());
            rev.set(tmp);
        }
    }
}

2、返回集合中最小的元素

public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll) {
    Iterator<? extends T> i = coll.iterator();
    T candidate = i.next();

    while (i.hasNext()) {
        T next = i.next();
        if (next.compareTo(candidate) < 0)
            candidate = next;
    }
    return candidate;
}

3、返回集合中最大的元素

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
    Iterator<? extends T> i = coll.iterator();
    T candidate = i.next();

    while (i.hasNext()) {
        T next = i.next();
        if (next.compareTo(candidate) > 0)
            candidate = next;
    }
    return candidate;
}

4、返回一个空集合(推荐使用)

public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

5、返回一个空Map

public static final <K,V> Map<K,V> emptyMap() {
    return (Map<K,V>) EMPTY_MAP;
}

6、返回一个空的Set

public static final <T> Set<T> emptySet() {
    return (Set<T>) EMPTY_SET;
}

7、返回含有单个元素的List

public static <T> List<T> singletonList(T o) {
    return new SingletonList<>(o);
}

8、返回含有单个元素的Map

public static <K,V> Map<K,V> singletonMap(K key, V value) {
    return new SingletonMap<>(key, value);
}

9、返回含有单个元素的Set

public static <T> Set<T> singleton(T o) {
    return new SingletonSet<>(o);
}

10、返回一个线程安全的List

public static <T> List<T> synchronizedList(List<T> list) {
    return (list instanceof RandomAccess ?
            new SynchronizedRandomAccessList<>(list) :
            new SynchronizedList<>(list));
}

11、返回一个线程安全的Map

public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
    return new SynchronizedMap<>(m);
}

12、返回一个线程安全的Set

public static <T> Set<T> synchronizedSet(Set<T> s) {
    return new SynchronizedSet<>(s);
}

13、对集合进行排序

public static <T extends Comparable<? super T>> void sort(List<T> list) {
    list.sort(null);
}

14、对集合进行排序(指定比较器)

public static <T> void sort(List<T> list, Comparator<? super T> c) {
    list.sort(c);
}

15、返回一个不可修改的List

public static <T> List<T> unmodifiableList(List<? extends T> list) {
    return (list instanceof RandomAccess ?
            new UnmodifiableRandomAccessList<>(list) :
            new UnmodifiableList<>(list));
}

(定义常量List使用)

16、返回一个不可修改的Map

public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K, ? extends V> m) {
    return new UnmodifiableMap<>(m);
}

17、返回一个不可修改的Set

public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
    return new UnmodifiableSet<>(s);
}

18、返回指定元素在列表出现的次数

public static int frequency(Collection<?> c, Object o) {
    int result = 0;
    if (o == null) {
        for (Object e : c)
            if (e == null)
                result++;
    } else {
        for (Object e : c)
            if (o.equals(e))
                result++;
    }
    return result;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值