2

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

ご覧のとおりgetUserProfile().getUserId()、値が1008である はマップにありますが、 が返されますfalse

なぜそれが起こっているのか、どうすればこの状況を修正できるのか知っていますか? を追加しようとしましたLong.valueOf(getUserProfile().getUserId()); しかし、それは戻ってきますfalse

PS: SO でこのような質問を検索しましたが、この状況では役に立ちませんでした

以下、私の完全なコード:

    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
4

2 に答える 2

4

あなたのマップは次のように宣言されています

Map<String, String> usersMap = ...;

したがって、値は でなければなりませんString。次に、またはをgetUserProfile().getUserId()返すと思います。この値からを作成して、メソッドを再度確認してください。IntegerintStringcontains

于 2013-02-14T16:40:06.720 に答える