我有两个TreeMap
TreeMap
fisrtMap{ "2022": "11", "2023": "22" } secondMap{ "2022": "33" }
我想把firstMap写成
firstMap
fisrtMap{ "2022": "11" }
我是说,我需要从Map上删除不常用的键。
cgh8pdjw1#
Map
Set
解决方案适用于任何可修改的Map类,而不仅仅是您提到的TreeMap类。正如Pshemo所评论的,你可以通过👉每个Map的一组键来做到这一点。首先设置一些示例数据,为了方便起见,我们使用Map.of文字语法制作了一个可修改的Mapx。
Map.of
x
Map < String, String > x = new HashMap <>( Map.of( "2022" , "11" , "2023" , "22" ) ); Map < String, String > y = Map.of( "2022" , "33" );
以集合的形式查看Mapx的键,然后删除该Map中键不存在于第二个集合中的任何条目,第二个集合是第二个Map中的键集合。
x.keySet().retainAll( y.keySet() );
对Map::keySet的调用返回Map中包含的键的Set视图。该集合是特殊的,因为它连接到它来自的Map。该集合支持元素移除,即从Map中移除相应的Map转储到控制台之前和之后的状态我们的Mapx。
Map::keySet
System.out.println( "x = " + x ); x.keySet().retainAll( y.keySet() ); System.out.println( "x = " + x );
看看这个code run live at Ideone.com。
x = {2023=22, 2022=11} x = {2022=11}
顺便说一下,如果数据的第一部分是日历年,那么可以使用java.time.Year类。
java.time.Year
1条答案
按热度按时间cgh8pdjw1#
使用两个
Map
对象的特殊Set
密钥解决方案适用于任何可修改的
Map
类,而不仅仅是您提到的TreeMap
类。正如Pshemo所评论的,你可以通过👉每个Map的一组键来做到这一点。
首先设置一些示例数据,为了方便起见,我们使用
Map.of
文字语法制作了一个可修改的Mapx
。以集合的形式查看Map
x
的键,然后删除该Map中键不存在于第二个集合中的任何条目,第二个集合是第二个Map中的键集合。对
Map::keySet
的调用返回Map中包含的键的Set
视图。该集合是特殊的,因为它连接到它来自的Map。该集合支持元素移除,即从Map中移除相应的Map
转储到控制台之前和之后的状态我们的Map
x
。看看这个code run live at Ideone.com。
顺便说一下,如果数据的第一部分是日历年,那么可以使用
java.time.Year
类。