字符串分割,属于比较常见的case了,在实际开发中,相信很多小伙伴会借助common-lang
工具包中的StringUtils
来实现,使用姿势也很简单
1 | String[] ans = StringUtils.split("a,b,c", ","); |
一般来讲上面这种使用方式没有问题,但是当分隔符前后为空时,需要特别注意,可能会和你预期的返回不一致
字符串分割,属于比较常见的case了,在实际开发中,相信很多小伙伴会借助common-lang
工具包中的StringUtils
来实现,使用姿势也很简单
1 | String[] ans = StringUtils.split("a,b,c", ","); |
一般来讲上面这种使用方式没有问题,但是当分隔符前后为空时,需要特别注意,可能会和你预期的返回不一致
实际业务开发中偶尔会遇到判断一个对象是否为基本数据类型,除了我们自老老实实的自己写之外,也可以借助Spring的 BeanUtils 工具类来实现
1 | // Java基本数据类型及包装类型判断 |
借助LinkedHashMap飞速实现一个LRU算法的缓存
1 | import java.util.LinkedHashMap; |
在我们的实际开发中,多多少少会遇到统计一段代码片段的耗时的情况,我们一般的写法如下
1 | long start = System.currentTimeMillis(); |
上面的写法没有什么毛病,但是看起来就不太美观了,那么有没有什么更优雅的写法呢?
HashMap对于javer而言,可以说是非常非常熟悉的一个容器类了,可以说99.99%的java开发者都用过它,那么你知道怎样创建一个HashMap是最优雅的方式呢?
从db中查了一个BigDecimal数据,希望按照四舍五入的方式进行取整,发现直接使用 intValue
不太对,特此记录一下正确姿势
1 | new BigDecimal(4.51).setScale(0, RoundingMode.HALF_EVEN).intValue() |
map的迭代删除,和我们常见的list,set不太一样,不能直接获取Iteraotr对象,提供的删除方法也是单个的,根据key进行删除,如果我们有个需求,将map中满足某些条件的元素删除掉,要怎么做呢?
我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列表升序,要求长度小于20,可以怎么做?
这个还不简单,几行代码就可以了
1 | public List<Integer> trimList(List<Integer> list, int add) { |
之前偶然在一个开源项目中看到下面这种写法,深感惊奇,当时没有记录,后来果不其然就忘掉了这种写法,现在又看到这种写法,特此记录
1 | long price = 1_000_123L; |
如何获取应用中,所有活动的线程?
1 | ThreadGroup group = Thread.currentThread().getThreadGroup(); |
上面是获取当前线程所在的ThreadGroup, 然后将这个分组内的所有线程丢到slackList数组中,实际测试时,数组大小可能是大于实际的线程数的(而且可能性特别大)
通过ThreadGroup,还可以获取上一层的Group, 然后遍历所有的线程
Update your browser to view this website correctly. Update my browser now