H5W3
当前位置:H5W3 > 其他技术问题 > 正文

Java Map 简介及其使用

1.Map集合概述和特点

概述:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值。Map接口和Collection接口的不同Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效。

2.Map集合的功能概述

(1):添加V put(K key,V value):添加元素。这个其实还有另一个功能?替换如果键是第一次存储,就直接存储元素,返回null如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值(2)  :删除void clear():移除所有的键值对元素V remove(Object key):根据键删除键值对元素,并把值返回(3)  :判断boolean containsKey(Object key):判断集合是否包含指定的键boolean containsValue(Object value):判断集合是否包含指定的值boolean isEmpty():判断集合是否为空(4)  :获取Set<Map.Entry<K,V>> entrySet(): 返回一个键值对的Set集合V get(Object key):根据键获取值Set keySet():获取集合中所有键的集合Collection values():获取集合中所有值的集合(5)  :长度int size():返回集合中的键值对的对数

3.Map集合的遍历之键找值

获取所有键的集合,遍历键的集合,获取到每一个键根据键找值  

示例代码如下:

public class Test4 {    public static void main(String[] args) {        HashMap<Phone,String> map = new HashMap<>();        map.put(new Phone("Apple",7000),"美国");        map.put(new Phone("Sony",5000),"日本");        map.put(new Phone("Huawei",6000),"中国");        Set<Phone> phones = map.keySet();        Iterator<Phone> iterator = phones.iterator();        while (iterator.hasNext()){            Phone next = iterator.next();            System.out.println(next.getBrand()+"=="+next.getPrice()+"=="+map.get(next));        }    }}class Phone{    private String Brand;    private int Price;    public Phone(String brand, int price) {        Brand = brand;        Price = price;    }    public String getBrand() {        return Brand;    }    public void setBrand(String brand) {        Brand = brand;    }    public int getPrice() {        return Price;    }    public void setPrice(int price) {        Price = price;    }}

获取所有键值对对象的集合,遍历键值对对象的集合,获取到每一个键值对对象,根据键值对对象找键和值  

示例代码如下:

public class Test4 {    public static void main(String[] args) {        HashMap<Phone,String> map = new HashMap<>();        map.put(new Phone("Apple",7000),"美国");        map.put(new Phone("Sony",5000),"日本");        map.put(new Phone("Huawei",6000),"中国");        Set<Map.Entry<Phone, String>> entries = map.entrySet();        for (Map.Entry<Phone, String> entry : entries) {            System.out.println(entry.getKey().getBrand()+"==="+entry.getKey().getPrice()+"==="+entry.getValue());        }    }}

4.LinkedHashMap的概述和使用

LinkedHashMap的概述: Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。LinkedHashMap的特点: 底层的数据结构是链表和哈希表 元素有序 并且唯一。元素的有序性由链表数据结构保证 唯一性由 哈希表数据结构保证。Map集合的数据结构只和键有关  

5.TreeMap集合

TreeMap 键不允许插入nullTreeMap: 键的数据结构是红黑树,可保证键的排序和唯一性排序分为自然排序和比较器排序线程是不安全的效率比较高6.TreeMap集合排序:实现Comparable接口,重写CompareTo方法使用比较器  

7.TreeMap集合的遍历

示例代码如下:

public class Test4 {    public static void main(String[] args) {        TreeMap<Phone,String> map = new TreeMap<>();        map.put(new Phone("Apple",7000),"美国");        map.put(new Phone("Sony",5000),"日本");        map.put(new Phone("Huawei",6000),"中国");        Set<Phone> phones = map.keySet();        Iterator<Phone> iterator = phones.iterator();        while(iterator.hasNext()){            Phone next = iterator.next();            System.out.println(next.getBrand()+"==="+next.getPrice()+"==="+map.get(next));        }    }}class Phone implements Comparable<Phone>{    private String Brand;    private int Price;    public Phone(String brand, int price) {        Brand = brand;        Price = price;    }    public String getBrand() {        return Brand;    }    public void setBrand(String brand) {        Brand = brand;    }    public int getPrice() {        return Price;    }    public void setPrice(int price) {        Price = price;    }    @Override    public int compareTo(Phone o) {        return this.getPrice() - o.getPrice();    }}

8.Collections工具类的概述和常见方法

(1):Collections类概述: 针对集合操作 的工具类(2):Collections成员方法public static void sort(List list): 排序,默认按照自然顺序public static int binarySearch(List<?> list,T key): 二分查找public static T max(Collection<?> coll): 获取最大值public static void reverse(List<?> list): 反转public static void shuffle(List<?> list): 随机置换

Map中的键唯一,但是当存储自定义对象时,需要重写Hashcode和equals方法  

本文地址:H5W3 » Java Map 简介及其使用

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址