Map根据Value排序
说道Map排序,大家第一时间想到的是,利用现成的TreeMap,它会自动根据Map的Key进行排序。但是如果要按照Map的Value进行排序呢?api没有提供现成的实现,只能自己实现了。有以下几个核心组件。1,Comparator要想自定义排序肯定少不了Comparator,在compare方法里面实现自己的排序逻辑,这里正是借用了Comparator。2,M...
Java保留两位小数的方法
保留两位小数一般有如下几种方法:1,BigDecimal.setScale方法,在做精确计数的应用时,经常会用到BigDecimal,需要注意的一点是,初始化BigDecimal时必须用String,否则精度不正确。点击(此处)折叠或打开BigDecimal bg = new BigDecimal("0.719"); System.out.println(bg.set...
单例与序列化
【转载】原文见http://ifeve.com/perfect-singleton/ 原文的题目叫“完美的单例实现”,但是看了下内容,不敢苟同,就我所知,要写一个安全、完美的单例是要考虑很多方面的,譬如懒加载、并发问题、内存模型、指令重排等。但是原文中并有提及到这些,仅仅说了一下序列化与单例,所以这里我就叫“单例与序列化”吧。...
InputStream之available()
InputStream的available()方法返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。下一个调用可能是同一个线程,也可能是另一个线程。一次读取或跳过此估计数个字节不会受阻塞,但读取或跳过的字节数可能小于该数。注意,有些 InputStream 的实现将返回流中的字节总数,但也有很多实现不会...
HashMap深度历险
一个面试题:往HashMap中存100个元素,问:HashMap的初始化大小是多少最合适?HashMap概述:HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null键和null值。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构:在java编程语言中,最基本的数据结构就只...
class与classloader的getResourceAsStream区别
我们经常用getResourceAsStream来获取配置文件信息,也有2种方式getResourceAsStream,一种是class.getResourceAsStream,另一种是classloader.getResourceAsStream,这2种方式有什么区别呢?class.getResourceAsStream("path"):从当前class的目录下找资源class.getResourceAsStream("/path");/代表了class的包名,也就是...
JDBC使用PreparedStatement的好处
我们为什么在程序中要使用PreparedStatement而不是Statement?有以下几个原因。1,从程序本身的角度来看,PreparedStatement更具效率。我们通过connection.preparedStatement(sql)方法来获得PreparedStatment对象,然后通过preStatement.setXXX来设置查询参数。如果我有2个查询,SQL语句都一样,但是参数不同,使用Pre...
Java输出流在txt文件中的换行控制
有时候需要将一段内容输出到txt文件,在程序中将内容字符串拼接好,包括 \t 以及 \n 等符号,然后利用java.io中的writer将字符串写到txt文件中,本以为很简单的一件事,结果打开txt文件一看,格式完全是乱的,tx...
doubule在商用计算中的替代方案
由于在java中double类型数据存储的特殊性,在进行商用计算时往往会出现错误的结果,所以不得不用BigDecimal来取代double来进行计算。在构造Bigdecimal对象时,API提供了double入参,但这是一个陷阱...