工具类Utils

本文介绍了Java中实现List深拷贝的两种方法,包括基本类型和复杂类型的处理,以及利用序列化进行深拷贝。此外,还讲解了数据格式转化,如浮点数格式化和字符串转时间格式。最后,提供了一个简单的字符串反转函数。这些实用技巧对于日常编程工作非常有帮助。

工具类

一、深拷贝

1.List深拷贝(基本类型)
public static <T> List<T> deepCopy1(List<T> list) {
	List<T> newList = new ArrayList<T>();
    CollectionUtils.addAll(newList, new Object[list.size()]);
    Collections.copy(newList, list);
    return newList;
}
2.List深拷贝(复杂类型,序列化及反序列化)
public static <T> List<T> deepCopy(List<T> src) {
	try (ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
			ObjectOutputStream outputStream = new ObjectOutputStream(byteOut);) {
		outputStream.writeObject(src);
		try (ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
				ObjectInputStream inputStream = new ObjectInputStream(byteIn);) {
			return (List<T>) inputStream.readObject();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
	return Collections.emptyList();
}

二、数据格式转化

1.浮点型数据格式转化,并去掉小数点后多余的零
DecimalFormat decimalFormat = new DecimalFormat("###.##");
System.out.println(decimalFormat.format(0.0123f));
//打印:0.01
System.out.println(decimalFormat.format(3.001234f));
//打印:3
2.字符串转换成时间格式

public static void main(String[] args) {
   DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHH");
   System.out.println(LocalDateTime.parse("2020110405", dtf));
}

三、字符串反转

public static String reverse(String originStr) {
	if(originStr == null || originStr.length() <= 1) 
		return originStr;
	return reverse(originStr.substring(1)) + originStr.charAt(0);
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值