Java:HashMap和TreeMap的常用方法及使用

首先我们来了解一下Map接口

(1)Map

Map包含了一系列“键(key)-值(values)”之间的映射关系,一个Map对象可以看作是一个“键-值”对的集合,在该集合中可以通过一个键找到其对应的值。

该接口是独立于Collection接口体系的,Map体系中所有类和接口的方法都源自于Map接口。

我们使用到的实现Map接口的类主要为HashMap类和TreeMap类。

(2)HashMap

HashMap 是 Map 接口的实现类,它存储的内容是键值对(key-value)映射,其中 key、value 都可以为 null。HashMap 是无序的,即被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。

由于采用了Hash函数,对于Map的普通操作性能是稳定的,但如果使用iterator访问Map,为了获得高的运行效率最好在创建HashMap时不要将它的容量设得太大。

 创建HashMap

public static void main(String[] args) {
   // 创建 HashMap 集合,key 存储字符串类型,value 存储整数类型
   Map<String, Integer> hashMap = new HashMap<>();
    }

HashMap集合的常用方法

put(key,value);  //往集合中添加元素,key 值不可重复,重复时会覆盖之前的 value 值

get(Object key);  //返回指定键的值(value),若不存在则返回null

remove(Object key);  //根据 key 或者 key-value 去除集合中元素,并分别返回 value 值和 Boolean 值

boolean containsKey(Object  key);  //如果此映射包含指定键的映射,则返回true 。

boolean containsValue(Object value);  //如果此映射将一个或多个键映射到指定的值,则返回true 。

int size();  //返回集合长度

boolean isEmpty();  //判断集合是否为空

void clear();  //清除集合中的所有元素

values();  //返回一个新集合,获取集合中所有元素的 values

keySet();  //返回一个新集合,获取集合中所有元素的 key

常用方法代码示例:

 public static void main(String[] args) {
        // 创建 HashMap 集合,key存储字符串类型,value存储整数类型
        Map<String, Integer> hashMap = new HashMap<>();
        // 添加元素
        hashMap.put("李四",28);
        hashMap.put("张三",26);
        hashMap.put("王五",26);
        // 根据 key 获取 value 值
        Integer zs = hashMap.get("张三");
        System.out.println(zs);
        // 获取所有 key 值
        Set<String> strings = hashMap.keySet();
        System.out.println(strings);
        // 获取所有 value 值
        Collection<Integer> values = hashMap.values();
        System.out.println(values);
        // 根据 key 去除元素
        Integer ww = hashMap.remove("王五");
        System.out.println(ww);
        // 根据 key-value 去除元素
        boolean boole = hashMap.remove("李四", 28);
        System.out.println(boole);     
        System.out.print(hashMap);
    }

结果示例:

  • 26
  • [李四, 张三, 王五]
  • [28, 26, 26]
  • 26
  • true
  • {张三=26}

(3)TreeMap

TreeMap类和TreeSet类相似,是基于红黑树实现的,是采用一种有序树的结构实现了Map的子接口SortedMap。该类将按键的升序的次序排列元素。

创建TreeMap

public static void main(String[] args) {
   // 创建 TreeMap 集合,key 存储字符串类型,value 存储整数类型
   Map<Integer, Stirng> map = new TreeMap<>();
    }

TreeMap的常用方法

clear();  //清除集合中的所有元素

boolean containsKey(Object  key);  //如果此映射包含指定键的映射,则返回true 

boolean containsValue(Object value);  //如果此映射将一个或多个键映射到指定的值,则返回true 

int size();  //返回集合长度

get(Object key);  //返回指定键的值(value),若不存在则返回null

firstKey();  //返回当前映射中的第一个键

lastKey();  //返回当前映射中的最后一个键

(4)HashMap和TreeMap的遍历方法 

1.先得到key值,再使用iterator遍历集合

TreeMap<Integer,String> map = new TreeMap<>();
map.put(1,"xixi");
map.put(2,"jiaojiao");
  
Set<String> t = map.getKey();
Iterator it = t.iterator();
Integer key = null; //必须先进行key值的声明
while (it.hasNext()) {
    key = (Integer)it.next();
    String value = map.get(key);
    System.out.println(value);
}

2.先得到key值,再使用增强for进行遍历(推荐使用增强for)

TreeMap<Integer,String> map = new TreeMap<>();
map.put(1,"xixi");
map.put(2,"jiaojiao");

for(int key:map.getKey){
    System.out.println(map.get(key));
}

3.直接通过value值,使用iterator遍历

TreeMap<Integer,String> map = new TreeMap<>();
map.put(1,"xixi");
map.put(2,"jiaojiao");

Collection<String> t = map.values();
Iterator it = t.Iterator();
String value = null; //必须声明
while(it.hasNext()){
    value = (String)it.next();
    System.out.println(value);
}

4.直接通过value值,使用增强for遍历(推荐使用增强for)

TreeMap<Integer,String> map = new TreeMap<>();
map.put(1,"xixi");
map.put(2,"jiaojiao");

for(String value:map.values()){
    System.out.println(value);
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值