HashMap排序
1.继承Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
2.自定义比较器
强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。
/**
* 实现对HashMap集合排序
* /
public class HashMapTest {
public static void main(String[] args) {
HashMap<Integer, User> users = new HashMap<>();
users.put(1, new User("张三", 25));
users.put(3, new User("李四", 22));
users.put(2, new User("王五", 28));
System.out.println(users);
// 如何将hashmap排序呢?
HashMap<Integer, User> sortHashMap = sortHashMap(users);
System.out.println(sortHashMap);
}
private static HashMap<Integer, User> sortHashMap(HashMap<Integer, User> users) {
Set<Map.Entry<Integer, User>> entrySet = users.entrySet();
// 将set集合转化为list集合,因为我们要使用集合工具类对数据进行排序
ArrayList<Map.Entry<Integer, User>> list = new ArrayList<>(entrySet);
Collections.sort(list,
// 这里使用的是Java8兰布达表达式
(Map.Entry<Integer, User> o1, Map.Entry<Integer, User> o2) ->
o2.getValue().getAge() - o1.getValue().getAge()
);
// LinkHashMap是有序的Map集合
LinkedHashMap<Integer, User> linkedHashMap = new LinkedHashMap<>();
for (Map.Entry<Integer, User> entry : list) {
linkedHashMap.put(entry.getKey(), entry.getValue());
}
return linkedHashMap;
}
}
Java 中会存在内存泄漏吗?
理论上Java因为有垃圾回收机制(GC)不会存在内存泄露问题。开发中,可能会存在无用但可达的对象,这些对象不能被GC回收,因此也会导致内存泄露的发生。例如hibernate的Session(一级缓存)中的对象属于持久态,垃圾回收器是不会回收这些对象的,然而这些对象中可能存在无用的垃圾对象,如果不及时关闭(close)或清空(flush)一级缓存就可能导致内存泄露。
GC是什么? 为什么要有GC?
GC可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM可以屏蔽掉显示的垃圾回收调用。
什么时候用assert (断言):
常用的调试方式。对程序的一条语句进行检查,保证其为true。若为false,说明程序处于不正确状态,系统将给出警告或退出。assertion检查通常在开发和测试时开启。为了提高性能, 在软件发布后,assertion检查通常是关闭的。
Webservice与RPC的区别:
RPC:
1)RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
2)RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)
3)RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)
4)RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)
WebService: http传输信道、XML的数据格式、SOAP封装格式、WSDL的描述方式、UDDI,是一种目录服务,企业可以使用它对WebService进行注册和搜索