`

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%

相关推荐

    配置route-map详解

    Route-Map 是一种路由选择策略,允许 Network Administrator 根据不同的路由策略来选择路由。Route-Map 通常用于路由重发布、路由选择、路由过滤等场景。 配置 Route-Map 的步骤: 1. 配置接口 IP:首先需要配置...

    java集合类list-set-map.doc

    java集合类list-set-map.doc

    set-UID实验报告

    在计算机系统中,特别是在Unix和类Unix系统如Ubuntu上,set-UID(Set-User-ID)是一种特殊的权限标志,用于控制程序执行时的权限。这个标志允许一个用户运行一个程序时,该程序可以暂时获得文件所有者的权限,即使该...

    route-map不错的路由过滤总结

    Route-map 是一种强大的路由过滤工具,常用于路由协议之间的重分布、Policy-Based Routing(PBR)和 Border Gateway Protocol(BGP)。本文将对 Route-map 的配置和应用进行详细的总结。 一、Passive-interface ...

    Java_Collection_List-Set-Map.zip_list set map

    在Java编程语言中,集合框架是处理对象组的重要工具,主要包括List、Set和Map三大接口。这些接口由Java Collection Framework提供,它是一个统一的架构,用于存储和操作各种类型的对象。接下来,我们将深入探讨这三...

    对比Route-Map在 Redistribute以及Policy-Routing中的应用及注意点

    Route-Map 是一种强大的路由策略工具,能够应用在两种不同的地方:Redistribute 和 Policy-Routing。但是,区别必须搞清楚,以免带来不必要的麻烦。 在 Redistribute 中,Route-Map 可以用来过滤、修改路由信息,...

    Set-List-Map.rar_DEMO_list set map

    `Set-List-Map.rar_DEMO_list set map`这个压缩包文件很可能是为了演示如何使用这些集合类型的实例代码。 首先,我们来看`List`接口。`List`是有序的集合,允许有重复元素,并且可以保持插入时的顺序。Java中常用的...

    Java集合类List-Set-Map的区别和联系.doc

    Java 集合类 List-Set-Map 的区别和联系 Java 集合类 List、Set 和 Map 是 Java 语言中最基本的集合类,它们之间存在着紧密的联系和区别。在本文中,我们将对 Java 集合类 List、Set 和 Map 的区别和联系进行详细的...

    区别和联系-list-map-set-vector

    ### 区别与联系:List、Map、Set、Vector #### List List 是 Java 集合框架中的一个接口,它允许元素重复,并且每个元素都有一个特定的顺序位置。这意味着可以通过索引来访问 List 中的元素。List 提供了多种实现...

    set-collections-map

    ### Java中的Set与Map集合详解 #### 一、Set系列集合概述 Set接口是`java.util.Collection`框架的一部分,它代表一个不允许重复元素的集合。Set接口的主要特点是它不包含重复元素,即Set中不能有两个相同的对象。...

    Java-list-set-map.zip_Java list

    总之,理解并熟练运用Java的`List`、`Set`、`Map`接口及其实现,是成为一名合格Java开发者的必备技能。通过阅读“Java list set map.PDF”这份资料,开发者可以深入学习这些集合类的原理和使用技巧,提高编程效率。

    set-map:映射一组

    安装$ npm install set-map用法import setMap from 'set-map' ;const set = new Set ( [ 'foo' , 'bar' ] ) ;setMap ( set , value =&gt; `yo ${ value } ` ) . values ( ) ;//=&gt; ['yofoo', 'yobar']原料药setMap(输入...

    BGP Route-Map Policy List Support

    **BGP Route-Map Policy List Support**(边界网关协议路由映射策略列表支持)是Cisco系统在多个版本的Cisco IOS软件中引入的一项功能增强。该功能允许网络管理员将一系列的匹配条件组合成名为“策略列表”的命名...

    ccnp 路由控制如何走下一跳route-map

    在Cisco CCNP(思科认证网络高级工程师)的学习与实践中,路由映射(Route-Map)是一种非常重要的技术,它能够帮助网络管理员实现精确的流量控制和路由策略制定。本文将根据给定的信息来深入探讨CCNP中路由控制如何...

    route-maproute-map

    Route-map的一个显著特点是其默认行为:如果没有定义set语句,那么route-map仅用于匹配流量,而不做任何修改。此外,每个route-map序列号下的命令类似于ACL的行,且route-map默认为permit模式,但需要手动指定序列号...

    前端开源库-object-to-map

    `object-to-map`是一个开源库,专门用于将JavaScript中的对象转换为ES6的Map数据结构。这个库的出现,旨在利用Map的特性,为开发者提供更强大的键值对处理能力。下面我们将详细探讨这个库的功能、使用方法以及Map在...

    emacs-bind-map:在多个位置绑定个人键盘映射

    `emacs-bind-map` 是一个Emacs Lisp(Elisp)库,用于帮助用户在多个不同的上下文中方便地绑定个人键盘映射。这个库特别适用于那些希望在整个Emacs环境中或者特定模式下统一键盘操作的用户。 在Emacs中,键绑定是...

    set-cookie-parser:用于解析 HTTP set-cookie 标头的 Node.js 库

    接受单个set-cookie标头值、一组set-cookie标头值或可能具有 0 个或多个set-cookie标头的 Node.js 响应对象。 还接受一个可选的选项对象。 默认值: { decodeValues : true , // Calls dcodeURIComponent on ...

Global site tag (gtag.js) - Google Analytics