gpt4 book ai didi

java - 当值在 map 中时,Map.containsValue() 返回 false

转载 作者:行者123 更新时间:2023-12-02 07:53:55 27 4
gpt4 key购买 nike

我正在尝试检查 map 中是否存在值,但我不知道为什么 containsValue() 没有正确检查它。

这是我的代码:

    Map<String, String> usersMap = userAPI.getBuyersFromBUUPToRootMap(getParentBusinessUnitId());
//usersMap's [STDOUT] {super, root (rootSuper) - [EZMRootCmp]=3008, user, buyer A (buyer1) - [EZMBuyer]=1007, user, Obsvr (observer) - [EZMBuyer]=1006, user, Root (rootTest) - [EZMRootCmp]=3001, user, Test (test) - [EZMBuyer]=1001, zabuhab, Miguel (buyerAdmin1) - [EZMBuyer]=1008}

System.out.println(usersMap.values());
//[STDOUT] [3008, 1007, 1006, 3001, 1001, 1008]

System.out.println(usersMap.containsValue(getUserProfile().getUserId())); //[STDOUT] false
//getUserProfile().getUserId() [STDOUT] 1008

如您所见,值为1008getUserProfile().getUserId()在Map中,但返回false .

您知道为什么会发生这种情况吗?我该如何解决这种情况?我尝试添加 Long.valueOf(getUserProfile().getUserId());但它一直返回 false

PS:我在 SO 中搜索了类似 this 的问题,但这对我这种情况没有帮助

下面是我的完整代码:

    UserAPI userAPI = ServiceLocator.getService(UserAPI.class);
Map<String, String> usersMap = userAPI.getBuyersFromBUUPToRootMap(getParentBusinessUnitId());
System.out.println(usersMap);
System.out.println("#######################");
System.out.println(usersMap.values());
System.out.println("##########valor para getAuctionHeaderDO().getPrimaryContact().getId() #############");
System.out.println(usersMap.containsValue(getAuctionHeaderDO().getPrimaryContact().getId()));
System.out.println("##########valor para getUserProfile().getUserId()#############");
System.out.println(getUserProfile().getUserId());
System.out.println(usersMap.containsValue(getUserProfile().getUserId()));

结果:

[STDOUT] {super, root (rootSuper) - [EZMRootCmp]=3008, user, buyer A (buyer1) - [EZMBuyer]=1007, user, Obsvr (observer) - [EZMBuyer]=1006, user, Root (rootTest) - [EZMRootCmp]=3001, user, Test (test) - [EZMBuyer]=1001, zabuhab, Miguel (buyerAdmin1) - [EZMBuyer]=1008}

[STDOUT] #######################

[STDOUT] [3008, 1007, 1006, 3001, 1001, 1008]

[STDOUT] ##########valor para getAuctionHeaderDO().getPrimaryContact().getId() #############

[STDOUT] false

[STDOUT] ##########valor para getUserProfile().getUserId()#############

[STDOUT] 1008

[STDOUT] false

最佳答案

usersMap<String,String>是字符串键和字符串值的映射。我认为getAuctionHeaderDO().getPrimaryContact().getId()返回integerlongMap#containsValue(Object)接受任何 object值,但无法找到它,因为值在同一类型中不可用。

<小时/>

一个小推导 -

Map<String,String> map= new HashMap<String, String>();
map.put("10", "1000");
map.put("11", "1001");
map.put("12", "1002");
map.put("13", "1003");
System.out.println(map.containsValue(1002));

它打印 false .

<小时/>

您应该找到字符串形式的值,然后您将能够获得所需的结果。

System.out.println(map.containsValue(String.valueOf(1002)));

它将打印 true .

关于java - 当值在 map 中时,Map.containsValue() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14879555/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com