Lang 包:
字符串工具类:StringUtils
@Test
public void testStringUtils() {
boolean flag = StringUtils.isEmpty("");
System.out.println(flag);
//判断字符串是否为数字
System.out.println(StringUtils.isNumeric("1245d"));
//输出最左边的 n 个字符
System.out.println(StringUtils.left("ZhangChao",5));
//统计子字符串出现的次数
System.out.println(StringUtils.countMatches("ZhangChao","an"));
//随机生成,长度为 n 的仅字母的字符串
System.out.println(RandomStringUtils.randomAlphabetic(5));
//随机生成,长度为 n 的 ASCII 字符串
System.out.println(RandomStringUtils.randomAscii(5));
//以一个单词为操作对象,首字母大写
System.out.println(WordUtils.capitalize("i'm zhang chao"));
}
时间工具类:
@Test
public void testDateUtil() throws ParseException {
//将日期转为指定格式的字符串
String dateStr = DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss");
System.out.println(dateStr);
//将时间字符串转化为 Date 对象
Date date = DateUtils.parseDate("2018/08/29","yyyy/MM/dd");
System.out.println(date);
}
Joda 包:
Joda 日期扩展包,对时间、日期进行了一些列的封装,非常方便。
本地格式的日期时间:
@Test
public void testTime() {
DateTime dt = new DateTime();
//按照地区输出星期
System.out.println(dt.dayOfWeek().getAsText(Locale.CHINA));
System.out.println(dt.dayOfWeek().getAsText(Locale.ENGLISH));
//输出本地日期格式
System.out.println(dt.toLocalDate());
//日期格式化
System.out.println(dt.toString(DateTimeFormat.forPattern("yyyy 年 M 月 d 日")));
}
日期计算:
/**
* 日期计算处理工具类:
* DateTime 是不可变的,即使执行了 plusxxx,minusxxx 操作,其对象仍然不会改变,只是新生了一个对象而已。
*/
@Test
public void testDate() {
DateTime dt = new DateTime();
//一个小时后星期几
System.out.println("一小时后是:" + dt.plusHours(1).dayOfWeek().getAsText());
//24小时后星期几
System.out.println("24小时后是:" + dt.plusHours(24).dayOfWeek().getAsText());
//两天后星期几
System.out.println("两天后是:" + dt.plusDays(2).dayOfWeek().getAsText());
//两年后的时间
System.out.println("两年后的今天是:" + dt.plusYears(2).toLocalDate());
//十年前的今天星期几
System.out.println("十年前的今天是:" + dt.minusYears(10).dayOfWeek().getAsText());
//离 2018-08-30 还有多少小时
System.out.println("距离 2018-08-30 还有:" + Hours.hoursBetween(dt, new DateTime("2018-08-30")).getHours() + "小时");
}
/**
* MutableDateTime:可变的,调用相应的方法后会改变其自身的值
*/
@Test
public void testMutableDateTime() {
MutableDateTime mdt = new MutableDateTime();
//十年后
DateTime dt = new DateTime().plusYears(10);
while (mdt.isBefore(dt)){
//每次加一天
mdt.addDays(1);
//黑色周五:13号并且是星期五
if (mdt.getDayOfMonth() == 13 && mdt.getDayOfWeek() == 5) {
System.out.println("黑色星期五:" + mdt.toString(DateTimeFormat.forPattern("yyyy 年 M 月 d 日")));
}
}
}
与 JDK 中的日期库进行转换:
@Test
public void testDateTimeConverDate() {
DateTime dt = new DateTime();
// DateTime -> Date
Date date = dt.toDate();
System.out.println(date);
// Date -> DateTime
DateTime dateTime = new DateTime(date);
System.out.println(dateTime.toLocalDate());
}
Collections:
Collections 工具包提供了 ListUtils 、MapUtils 等基本集合操作工具,比较常用而且简单。
Bag:
Bag 是 Collections 中的一种,它可以容纳重复元素,于 List 不同的是,它提供了元素统计功能,比如求一个集合中某个元素的个数。
@Test
public void testBag() {
Bag box = new HashBag(Arrays.asList("red","blue","green","black","pink"));
box.add("pink",5);
System.out.println(box.size());//10
System.out.println(box.getCount("pink"));//6
}
双向Map:
在 JDK 中使用的 Map 要求键是唯一的,而双向 Map 要求键和值都必须唯一。也就是说键和值是一一对应的,可以通过键操作值,也可以通过值去操作键。
@Test
public void testBidMap() {
BidiMap<String,String> map = new TreeBidiMap<>();
map.put("张三","15082383272");
map.put("李四","0827-5519136");
//根据 key 获取 value
System.out.println(map.get("张三"));
//根据 value 获取 key
System.out.println(map.getKey("0827-5519136"));
//根据 value 删除键值对
map.removeValue("0827-5519136");
System.out.println(map.getKey("0827-5519136"));
}