SET-MAP现代诗一首

原创
2015/08/19 11:43
阅读数 73

天下人都知道Set,Map不能重复 

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

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

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

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

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


               

Java代码 

  1. public class Foo {  

  2.   

  3.     private String field1;  

  4.   

  5.     private String field2;  

  6.   

  7.     public Foo(String field1, String field2) {  

  8.         this.field1 = field1;  

  9.         this.field2 = field2;  

  10.     }  

  11.   

  12.     public String getField1() {  

  13.         return field1;  

  14.     }  

  15.   

  16.     public String getField2() {  

  17.         return field2;  

  18.     }  

  19.   

  20.     @Override  

  21.     public String toString() {  

  22.         return "field1:"+field1+";field2:"+field2;  

  23.     }  

  24.   

  25.     @Override  

  26.     public int hashCode() {  

  27.         return field1.hashCode();  

  28.     }  

  29.   

  30.     @Override  

  31.     public boolean equals(Object obj) {  

  32.         Foo foo = (Foo) obj;  

  33.         return field1.equals(foo.getField1());  

  34.     }  

  35. }  



Java代码 

  1. import com.beust.jcommander.internal.Maps;  

  2. import com.beust.jcommander.internal.Sets;  

  3. import org.testng.annotations.Test;  

  4.   

  5. import java.util.Map;  

  6. import java.util.Set;  

  7.   

  8. /** 

  9.  * @author : chenxh(quickselect@163.com) 

  10.  * @date: 14-1-13 

  11.  */  

  12. public class CollectionTest {  

  13.   

  14.     @Test  

  15.     public void testSet(){  

  16.         Set<Foo> fooSet = Sets.newHashSet();  

  17.         Foo foo1 = new Foo("a""1");  

  18.         Foo foo2 = new Foo("a""2");  

  19.         fooSet.add(foo1);  

  20.         fooSet.add(foo2);  

  21.         System.out.println("set test...");  

  22.         for (Foo foo : fooSet) {  

  23.             System.out.println("item:"+foo);  

  24.         }  

  25.   

  26.         Map<Foo,String> fooMap = Maps.newHashMap();  

  27.         fooMap.put(foo1,"item1");  

  28.         fooMap.put(foo2,"item2");  

  29.         System.out.println("map test...");  

  30.         for (Map.Entry<Foo, String> entry : fooMap.entrySet()) {  

  31.             System.out.println("key=>"+entry.getKey()+"\nvalue=>"+entry.getValue());  

  32.         }  

  33.     }  

  34. }  



看看结果吧: 

引用


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

map test... 
key=>field1:a;field2:1 //旧键未被覆盖,值被覆盖了 
value=>item2 


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部