集合类Set\Map

Set接口的常用方法

Set集合由Set接口和Set接口的实现类组成的。Set接口继承了Collection接口,因此包含Collection接口的所有方法。Set接口中的常用方法如下图:

由于Set集合中不允许存在重复值,因此可以使用Set集合中的addAll()方法,将Collection集合添加到Set集合中并除掉重复值。

Set接口的实现类

要使用Set集合,通常情况下需要声明为Set类型,然后通过Set接口的实现类来实例化。Set接口的实现类常用的有HashSet和TreeSet类。语法格式如下:

Set<String>collSet=new HashSet<String>();

Set<String>collSet2=new TreeSet<String>();

由于Set集合中的对象是无序的,遍历Set集合的结果与插入Set集合的顺序并不相同。

package org.hanqi.array;

import java.util.*;

public class Test2 {

    public static void main(String[] args) {

//        int i;
//        int[]m=new int[5];
//        set<int>d=

        //哈希

        System.out.println("TreeSet");

        Set<String>s=new HashSet<String>();

        HashSet<String>s1=new HashSet<String>();

        if(s.add("a"))
        {
            System.out.println("保存a成功");
        }

        s.add("a");
        s.add("b");
        s.add("c");
        s.add("d");
        s.add("e");
        s.add("f");
        s.add("g");

        s.addAll(null);

        if(!s.add("a"))
        {
            System.out.println("保存a失败");
        }

        for(String t:s)
        {
            System.out.println(t+" ");
        }

        if(s.remove("k"))
        {
            System.out.println("移除成功");
        }
        else
        {
            System.out.println("移除失败");
        }

        System.out.println("s的size"+s.size());

        Iterator<String>it=s.iterator();

        while(it.hasNext())
        {
            String t=it.next();

            if(t.equals("c"))
            {
                it.remove();
            }
            else
            {
                System.out.println(t);
            }
        }
        System.out.println("s的size"+s.size());

        System.out.println("TreeSet");

        Set<String>s2=new TreeSet<String>();
        s2.add("b");
        s2.add("a");
        s2.add("c");
        s2.add("g");
        s2.add("e");
        s2.add("f");
        s2.add("d");

        for(String t:s2)
        {
            System.out.println(t+" ");
        }

    }

}

TreeSet、HashSet

HashSet可以保存null,TreeSet不可以保存null,并且内部调用了TreeMap。

Map接口的常用方法

Map接口提供了将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值。Map接口中同样提供了集合的常用方法,如clear()、isEmpty()、size()等除此之外还包括下图所示的常用方法

由于Map集合中的元素是通过key、value进行存储的,要获取集合中指定的key值或value值,需要先通过相应的方法获取key集合或value集合,再遍历key集合或value集合获取指定值。

Map接口的实现类

Map接口常用的实现类有HashMap和TreeMap。通常建议使用HashMap实现类实现Map集合,因为由HashMap类实现的Map集合对于添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口实现的,HashMap通过哈希码对其内部的映射关系进行快速查找;由HashMap类实现的Map集合对于添加或删除映射关系效率较高;而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象存在一定的顺序,应该使用TreeMap类实现Map集合。

1.HashMap类

该类基于哈希表的 Map接口的实现,此实现提供所有可选映射操作,并允许使用null值和null键,但必须保证键的唯一性。 HashMap通过哈希码对其内部的映射关系进行快速查找。此类不保证映射的顺序,特别是不保证该顺序恒久不变。

2.TreeMap类

该类不仅实现了Map接口,还实现了java.util.SortedMap接口,因此集合中的映射关系具有一定的顺序。但在添加、删除和定位映射关系上,TreeMap类比HashMap类的性能差一些。由于TreeMap类实现的Map集合中的映射关系是根据键对象按照一定的顺序排列的,因此不允许键对象是null。

可以通过HashMap类实例化Map集合,当需要顺序输出时,再创建一个完成相同映射关系的TreeMap类实例。

package org.hanqi.array;

import java.util.*;

public class Test3 {

    public static void main(String[] args) {

        Map<String, String>m=new HashMap<String, String>();

        m.put("0533", "淄博");
        m.put("0531", "济南");
        m.put("0532", "青岛");

        System.out.println("长度="+m.size());

        m.put("0534", "青岛");//值可以重复,键不能重复

        m.put(null, null);

        //长度
        System.out.println("长度="+m.size());
        //取出
        System.out.println("0533="+m.get("0533"));

        //key是否存在
        if(m.containsKey("0533"))
        {
            System.out.println("key 0533 已存在");
        }
        //value是否存在
        if(m.containsValue("淄博"))
        {
            System.out.println("value 淄博 存在");
        }

        //遍历
        for(String k:m.keySet())
        {
            System.out.println(k+"="+m.get(k));
        }

    }

}

HashMap、TreeMap

时间: 2024-07-29 12:10:04

集合类Set\Map的相关文章

Java 集合类之Map探究

Java Map存在于java.util包中,是一个集合类,常见的集合类还有List.Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值. 本文利用一张类图简述一个Map相关的组织结构.类图如下: 类图说明: Map是一个顶级接口,从类图中可以看出主要包括了几个方法(部分).SortedMap和ConcurrentMap接口继承自Map接口,从名字就能看出一个是排序相关接口,一个是同步所需接口. AbstractMap是一个实现了Map接口的

android开发 集合类之map hashMap

map是个接口 ,hashMap是map的众多实现之一 map类可以理解为Objective - C中的字典 代码: package test; import java.util.HashMap;import java.util.Map; public class Test {    public static void main(String args []) {        Map<String, String> map = new HashMap<String, String&g

java集合类分析-map

不同于list还有set的单个元素的组织形式,map要求的保存的是一个组对象,也即使键值对.对jdk中的map源码是比较重要的,因为通过分析jdk中set的源码可以发现其实就是map的一层包装,实际上底层都是在调用map的具体实现的操作. public interface Map<K,V> { // Query Operations //返回map的大小 int size(); //判断map是否为空 boolean isEmpty(); //是否包含该键值 boolean containsK

java的集合类(Map、List与Set比较)

java中集合包括三大类,它们分别是Map.List和Map. 我们为什么要设定不同的集合类型,是为了放置不同的数据,而且不同类型用在不同的场合.这三个类放在何处呢,它们放在java.util包中,Set.List和Map都是接口,它们有各自的实现类.Set的主要实现类:HashSet和TreeSet,List的主要实现类是ArrayList,而Map主要实现类是HashMap和TreeMap. Set集合: 继承于Collection接口.类似一个罐子,把一个对象添加到set集合时,Set集合

Java集合类之List,Set探究

Collection是一个顶层的接口,在集合类中还有Map也属于顶层接口(参考Java集合类之Map探究),本文通过一张类图描述List和Set的基本结构. 类图解析: Collection是一个顶层的接口,定义了一系列方法,List和Set是继承自Collection的接口. 每个Collection都可以产生一个Iterator(参考Java iterator与iterator模式),从而可以利用Iterator进行遍历. AbstractCollection是Collection的抽象实现

Spark从入门到上手实战

Spark从入门到上手实战 课程学习地址:http://www.xuetuwuyou.com/course/186 课程出自学途无忧网:http://www.xuetuwuyou.com 讲师:轩宇老师 课程简介: Spark属于新起的基于内存处理海量数据的框架,由于其快速被众公司所青睐.Spark 生态栈框架,非常的强大,可以对数据进行批处理.流式处理.SQL 交互式处理及机器学习和Graphx 图像计算.目前绝大数公司都使用,主要在于 Spark SQL 结构化数据的处理,非常的快速,高性能

股票K线图-JfreeChart版

http://blog.csdn.net/ami121/article/details/3953272 股票K线图-JfreeChart版 标签: jfreechartpropertiesappletdatetabledataset 2009-03-03 16:00 9378人阅读 评论(8) 收藏 举报 分类: jfreechart(7) 股票的K线图是所有Chart图中最复杂的一种,把一个K线图拆分开来我们可以发现,K线图的上半截实际上是由阴阳线(阴阳线可以表示开盘价,收盘价,最高价,最低价

玩转 SSH(七):使用 dubbo + zookeeper 实现服务模块化

一.创建 SSMVCAnnoDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-quickstart 模版创建. 输入对应的项目坐标GroupId 和 ArtifactId 之后在项目名称中填入项目名称,这里我填的 ProjectName 和上文的 ArtifactId 相同,都是 SuperDemo. 点击确定后,等待 Maven 帮我们构建好项目的目录结构.当控制台显示 BUILD SUCCESS 就表示初始化

something_about_hashCode

(注 : 此blog主要是为了加深java 源码的认知度的记录 hashCode是一个返回hash(散列码)的方法,hash 就是用于区分对象的标志,就是类似于人类的基因,我们的母类Object 就拥有这样的hashCode方法来返回hash值,这个在java 集合类的Map中是核心,所以map玩的溜,就得搞清楚键值对,键值对的重点就是hash 了解了hash之后,我们再来看看java 类库中的一个比较特殊的基本数据类型 String 先来看看代码 1 /** 2 * hashCode 3 */