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) {//返回的listList<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<>());}//拿到对应层数的ListList<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
初始化后不能修改