Entry接口下的实现类
- SimpleEntry :初始化后可以setValue()设置值
- SimpleImmutableEntry :初始化后不能再改变
SimpleEntry
SimpleEntry可以存储单键值对,一个对象只存储一个键值对
SImpleEntry的使用
构造方法赋值
public static void main(String[] args) {
//构造方法赋值
AbstractMap.SimpleEntry<String,String> entry1 = new AbstractMap.SimpleEntry<>("刘备","蜀汉" );
AbstractMap.SimpleEntry<String,String> entry2 = new AbstractMap.SimpleEntry<>("孙权","东吴" );
System.out.println(entry1);
System.out.println(entry2);
}
可以修改对象的值
应用:
需要单键值对存储的场景
LeetCode102 二叉树的层序遍历
class Solution {
/**
* 1.root入队
* 2.遍历队列
* 3.取出队首元素 level,node
* 4.left,right 入队
*/
public List<List<Integer>> levelOrder(TreeNode root) {
//返回的list
List<List<Integer>> res = new ArrayList<>();
if(root == null){
return res;
}
Queue<AbstractMap.SimpleEntry<TreeNode,Integer>> queue = new LinkedList<>();
//1.root入队
queue.add(new AbstractMap.SimpleEntry(root,0));
//2、遍历队列
while (!queue.isEmpty()){
//3.取出队首元素
AbstractMap.SimpleEntry<TreeNode,Integer> map = queue.poll();
//取出节点和对应的层数
TreeNode node = map.getKey();
Integer level = map.getValue();
if(res.size() == level){
res.add(new ArrayList<>());
}
//拿到对应层数的List
List<Integer> list = res.get(level);
list.add(node.val);
//4.left , right 入队
if(node.left != null){
queue.add(new AbstractMap.SimpleEntry(node.left,level+1));
}
if(node.right != null){
queue.add(new AbstractMap.SimpleEntry(node.right,level+1));
}
}
return res;
}
}
SimpleImmutableEntry
初始化后就不能再修改,修改会报错
AbstractMap.SimpleImmutableEntry<String,String> entry =
new AbstractMap.SimpleImmutableEntry<>("刘备", "蜀汉");
entry.setValue("NULL");
Pair
初始化后不能修改