harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jimmy, Jing Lv (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-5788) [classlib][util] TreeMap.entrySet().contains() returns true for entries with null value
Date Wed, 30 Apr 2008 08:12:55 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-5788?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12593254#action_12593254
] 

Jimmy, Jing Lv commented on HARMONY-5788:
-----------------------------------------

Oops, sorry Mark I've made a mistake in the last post. It was trying to get a value, not an
entry, so my fix is invalid.
I believe your fix is correct!
And IMHO, maybe we can refactor it a little as(as most entries will not have null value, this
may improve performance as it avoid invoking containsKey(key) in most cases, which is costy):

                public boolean contains(Object object) {
                    if (object instanceof Map.Entry) {
                        Map.Entry<K, V> entry = (Map.Entry<K, V>) object;
                        K key = entry.getKey();
                        Object v1 = TreeMap.this.get(key), v2 = entry.getValue();
                        return v1 == null ? TreeMap.this.containsKey(key) : v1.equals(v2);
                    }
                    return false;
                }

> [classlib][util] TreeMap.entrySet().contains() returns true for entries with null value
> ---------------------------------------------------------------------------------------
>
>                 Key: HARMONY-5788
>                 URL: https://issues.apache.org/jira/browse/HARMONY-5788
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Mark Hindess
>
> The following code illustrates the problem:
> import java.util.TreeMap;
> public class TestTreeMap {
>     public static void main(String[] args) {
>         TreeMap master = new TreeMap<String, String>();
>         master.put("one", "1");
>         master.put("null", null);
>         TreeMap map = new TreeMap<String, String>();
>         Object[] element = master.entrySet().toArray();
>         for (int i = 0; i < element.length ; i++) {
>             System.out.println("Contains entry " + element[i] + "? == " +
>                                map.entrySet().contains(element[i]));
>         }
>     }
> }
> On harmony, the output is:
>   Contains entry null=null? == true
>   Contains entry one=1? == false
> on the RI, the output is:
>   Contains entry null=null? == false
>   Contains entry one=1? == false

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message