java面试宝典总结

在这里插入图片描述
在这里插入图片描述

package demo;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;

class User{
private String name;
private int age;
@Override
public String toString() {
return “User [name=” + name + “, age=” + age + “]”;
}
public User(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class HashMapTest {
public static void main(String[] args) {
HashMap<Integer, User> users = new HashMap<>();
users.put(1, new User(“张三”,25));
users.put(2, new User(“李四”, 23));
users.put(3, new User(“王五”, 34));
System.out.println(users);
HashMap<Integer,User> sortHashMap = sortHashMap(users);
System.out.println(sortHashMap);
}
public static HashMap<Integer, User> sortHashMap(HashMap<Integer, User> map){
//首先拿到map的键值对集合
Set<Entry<Integer,User>> entrySet = map.entrySet();
//将set集合转话为List集合,为什么,为了使用工具类的排序方法
List<Entry<Integer, User>> list=new ArrayList<Entry<Integer, User>>(entrySet);
//使用Collection的集合工具类对list进行排序,排序规则使用匿名内部类的方式来实现
Collections.sort(list,new Comparator<Entry<Integer, User>>() {
@Override
public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
//按照要求根据User的age的倒序进行排序
return o2.getValue().getAge()-o1.getValue().getAge();
}
});
//创建一个新的有序的map子类集合
LinkedHashMap<Integer,User> linkedHashMap = new LinkedHashMap<Integer,User>();
//将list中的数据存储再linkedHashMap中
for (Entry<Integer, User> entry : list) {
linkedHashMap.put(entry.getKey(), entry.getValue());
}
//返回结果
return linkedHashMap;
}
}
在这里插入图片描述
在这里插入图片描述

3.HashMap和HasTable有什么区别?
答:HashMap是线程不安全的,HashMap是一个接口,是Map的一个子接口,是将键映射到值的对象,不允许键值重复,允许空键和空值,由于非线程安全,HashMap的效率要较HasTable的高一些
HashTable是线程安全的一个集合,不允许null值作为一个key值或者Value值
HashTable是sychronized,多个线程访问时不需要自己为它的方法实现同步,而HashMap在被多个线程访问时的时候需要自己为它的方法实现同步

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40241957/article/details/82766661