java好用工具类一箩筐
java好用工具类一箩筐
可修改原始类型、对象引用包装类
单线程:MutableInt、MutableLong、MutableObject,便于一个方法修改参数、lamda表达式中引用并修改
多线程:AtomicLong、AtomicInt,java 8之后支持传入lamda表达式实现复杂更改
多线程高并发:LongAdder,分段锁技术实现高效率、高并发修改;另外因为是分段、求效率所以没有"操作并返回值"的方法,必须使用sum获取当前值
随机数
RandomUtils:可生成指定数值范围内的随机数
变量组合-tuple
适用于2-3个变量组合、绑定使用,但又不足够通用,需要定义新的对象类型的情景
ImmutablePair:不可变两个变量
MutablePair:可变两个变量
ImmutableTriple:不可变三个变量
MutableTriple:可变三个变量
反射
FieldUtils、ConstructorUtils、MemberUtils
数组元素增删
ArrayUtils-可以直接插入、删除元素,但是不修改原始数组,而是生成一个新的数组返回
对象通用操作
ObjectUtils-防止为空的判断、任意Comparable对象取最小值、中间值等
示例代码
MutableInt mutableInt = new MutableInt(2);
System.out.println(mutableInt.getValue());
mutableInt.setValue(3);
System.out.println(mutableInt.getValue());
AtomicInteger atomicInt = new AtomicInteger(4);
System.out.println(atomicInt.accumulateAndGet(4, (x, y) -> x * y));
System.out.println(atomicInt.get());
LongAdder longAdder = new LongAdder();
longAdder.increment();
System.out.println(longAdder.sum());
System.out.println(RandomUtils.nextLong(1, 10));
ImmutablePair immutablePair = ImmutablePair.of("world", "hello");
System.out.println(immutablePair.getRight());
ImmutableTriple immutableTriple = ImmutableTriple.of("world", "mid", "hello");
System.out.println(immutableTriple.getMiddle());
int[] intAry = { 1, 2, 3 };
int[] intAryN = ArrayUtils.insert(1, intAry, 4, 5);
System.out.println(ArrayUtils.toString(intAry));
System.out.println(ArrayUtils.toString(intAryN));
System.out.println(ObjectUtils.defaultIfNull(null,"nice"));
System.out.println(ObjectUtils.max("2034","2022","2026"));
输出
2
3
16
16
1
1
hello
mid
{1,2,3}
{1,4,5,2,3}
nice
2034