一、集合
1.集合定义
List<String> list1 = Lists.newArrayList(); //定义一个集合,内部源码中返回了一个new arrayList
List<String> list1 = Lists.newArrayList("a", "b", "c"); //直接定义集合内部属性
List<Integer> list = Arrays.asList(25,15,16,33,2); //直接定义集合内部属性
2.集合工具类Collections
翻转集合
Collections.reverse(list);
3.获取集合中指定元素的下标
int a = Arrays.binarySearch(list.toArray(), "c"); //获取指定元素的下标 前一个参数传数组,第二个参数传数组里的值
二、时间日期
1.日期相关工具类DateUtils/DateFormatUtils
// Date 转化为字符串 DateFormatUtils.format(new Date(),"yyyy-MM-dd HH:mm:ss"); // 字符串 转 Date DateUtils.parseDate("2020-05-07 22:00:00","yyyy-MM-dd HH:mm:ss");
2.时间计算DateUtils
Date now = new Date(); // Date 加 1 天 Date addDays = DateUtils.addDays(now, 1); // Date 加 33 分钟 Date addMinutes = DateUtils.addMinutes(now, 33); // Date 减去 233 秒 Date addSeconds = DateUtils.addSeconds(now, -233); // 判断是否 Wie 同一天 boolean sameDay = DateUtils.isSameDay(addDays, addMinutes); // 过滤时分秒,若 now 为 2020-05-07 22:13:00 调用 truncate 方法以后 // 返回时间为 2020-05-07 00:00:00 Date truncate = DateUtils.truncate(now, Calendar.DATE);
3.JDK8 时间类LocalDate,
LocalTime
JDK8 之后,Java 将日期与时间分为
LocalDate
,LocalTime
,功能定义更加清晰,当然其也提供一个LocalDateTime
,包含日期与时间。这些类相对于 Date 类优点在于,这些类与String
类一样都是不变类型,不但线程安全,而且不能修改。
LocalDateTime
进行字符串格式化。// 按照 yyyy-MM-dd HH:mm:ss 转化时间 LocalDateTime dateTime = LocalDateTime.parse("2020-05-07 22:34:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 将 LocalDateTime 格式化字符串 String format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(dateTime);
另外我们使用
LocalDateTime
获取当前时间年份,月份特别简单:LocalDateTime now = LocalDateTime.now(); // 年 int year = now.getYear(); // 月 int month = now.getMonthValue(); // 日 int day = now.getDayOfMonth();
三、IO流
1.IO流工具类IOUtils -------org.apache.commons.io.IOUtils
1、closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。
2、toString 转换IO流、Uri、byte[]为String。
3、copy IO流数据复制,从输入流写到输出流中,最大支持2GB。
4、toByteArray 从输入流、URI获取byte[]。
5、write 把字节、字符等写入输出流。
6、toInputStream 把字符转换为输入流。
7、readLines 从输入流中读取多行数据,返回List
8、copyLarge 同copy,支持2GB以上数据的复制。
9、lineIterator 从输入流返回一个迭代器,
10、根据参数要求读取的数据量,全部读取,如果数据不够,则失败。
2.文件操作工具类FileUtils ---------org.apache.commons.io.FileUtils
1、deleteDirectory 删除文件夹
2、readFileToString 以字符形式读取文件内容。
3、deleteQueitly 删除文件或文件夹且不会抛出异常。
4、copyFile 复制文件
5、writeStringToFile 把字符写到目标文件,如果文件不存在,则创建。
6、forceMkdir 强制创建文件夹,如果该文件夹父级目录不存在,则创建父级。
7、write 把字符写到指定文件中
8、listFiles 列举某个目录下的文件(根据过滤器)
9、copyDirectory 复制文件夹
10、forceDelete 强制删除文件
四、其他
1.属性判空工具类ObjectUtils & StringUtils
boolean empty = ObjectUtils.isEmpty(list); //任何类型都能使用ObjectUtils判空包括对象,类型,集合
//String类型也可以使用上面的判空,也可以使用StringUtils判空
StringUtils.isBlank()
2.四舍五入,保留两位小数
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
输出结果f1为 3.15;
3.转换工具类ConvertUtils
ConvertUtils.convert(value,toType) //value 待转换的字符串 toType 转换目标类型
4.类型复制工具类BeanUtils
BeanUtils.copyProperties(person, copyPerson); //第一个参数是源对象,第二个参数是目标对象
person.setLike("rap"); //源对象的属性发生变化,目标对象的属性不会发生变化
Cat cat = new Cat();
BeanUtils.copyProperties(person, cat); //类型不存在继承关系,能复制字段转成string然后赋值
5.String切割字符时,特殊字符需要转义
String s = "a*b*c";
s.split("\\*"); //特殊字符需要转义
6.随机数
int i = new Random().nextInt(4)+1; //生成1-4的随机整数
int k = new Random().nextInt(4); //生成0-4的随机整数