`

SET-MAP现代诗一首

阅读更多
天下人都知道Set,Map不能重复

80%人知道hashCode,equals是判断重复的法则

40%人知道Set添加重复元素时,旧元素不会被覆盖

20%人知道Map添加重复键时,旧键不会被覆盖,而值会覆盖

咖啡人啊,你可是那剩下的20%?

如果不是,看看下面的代码吧:


              

public class Foo {

    private String field1;

    private String field2;

    public Foo(String field1, String field2) {
        this.field1 = field1;
        this.field2 = field2;
    }

    public String getField1() {
        return field1;
    }

    public String getField2() {
        return field2;
    }

    @Override
    public String toString() {
        return "field1:"+field1+";field2:"+field2;
    }

    @Override
    public int hashCode() {
        return field1.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        Foo foo = (Foo) obj;
        return field1.equals(foo.getField1());
    }
}


import com.beust.jcommander.internal.Maps;
import com.beust.jcommander.internal.Sets;
import org.testng.annotations.Test;

import java.util.Map;
import java.util.Set;

/**
 * @author : chenxh(quickselect@163.com)
 * @date: 14-1-13
 */
public class CollectionTest {

    @Test
    public void testSet(){
        Set<Foo> fooSet = Sets.newHashSet();
        Foo foo1 = new Foo("a", "1");
        Foo foo2 = new Foo("a", "2");
        fooSet.add(foo1);
        fooSet.add(foo2);
        System.out.println("set test...");
        for (Foo foo : fooSet) {
            System.out.println("item:"+foo);
        }

        Map<Foo,String> fooMap = Maps.newHashMap();
        fooMap.put(foo1,"item1");
        fooMap.put(foo2,"item2");
        System.out.println("map test...");
        for (Map.Entry<Foo, String> entry : fooMap.entrySet()) {
            System.out.println("key=>"+entry.getKey()+"\nvalue=>"+entry.getValue());
        }
    }
}


看看结果吧:
引用

set test...
item:field1:a;field2:1 //旧元素未被覆盖

map test...
key=>field1:a;field2:1 //旧键未被覆盖,值被覆盖了
value=>item2
分享到:
评论
3 楼 西斧头帮老大-_- 2015-09-30  
最近都在看楼主的博文,感觉很受用,楼主辛苦了
2 楼 筱龙缘 2014-02-13  
rop 好像少了两个文件  能补上不 https://github.com/itstamen/rop/issues/9
1 楼 筱龙缘 2014-02-12  
汗颜   40%

相关推荐

Global site tag (gtag.js) - Google Analytics