Map和项目

1Map

1.1Map概述

Map 地图映射关系

    ORM 对象关系映射  类对象 <==> 数据库数据

双边队列

    数据存储形式都是(Key)值(Value)对形式

Map双边队列中对于数据存储类型

    有限制 存储数据类型在创建Map双边队列时进行约束,保证数据类型一致化

    也没限制 Map可以满足任意数据类型

Map使用两泛型

        Map<K,V>

1.2Map整体结构和常用API

interface Map<K,V>

---| class HashMap<K , V>

    底层存储数据结构采用的方式是哈希表方式。存储数据时根据当前存储Key作为计算机存储位置,和查询元素的唯一表示。

-------| class TreeMap<K,V>

    底层存储数据结构是一个二叉树结构,要求存储的键值对,Key必须有对应排序方式。这里需要Comparable<T>

    常用

    API  Aplication Program Interface

    SDK Softer Development Kits

put (K key, V value);

添加符合Map要求的键值对存入到双边队列中

put All(Map<? extends K, ? extends V> map)

添加另一个Map到当前Map中,要求当前Map本身对应的K,或者其子类

V是当前Map本身对应V,或者其子类

remove(Object key);

删除对应key键值对

put(K key, V value);

使用value修改已经存在的key对应的值

int size();

Map双边队列个数

boolean isEmpty();

判断当前Map双边队列中是否为空

boolean containKey(Object key);

判断指定Key是否存在

boolean containValue(Object value);

判断指定Value是否存在

Set<K> keySet();

返回Map双边队列中所有Key对应Set集合

Collection<V> valuses();

返回Map双边队列中所有valuse对应Collection集合


【补充】

setId

setName

以上方法是Setter方法,设置类对象属性的方法

keySet

返回值类型是一个Set集合,具有数据存储唯一性

valuses

以s结尾的方法,表示复数,一般返回值类型都是Collection,List或者数组

总结

set开头 设置方法

get开头 获取方法

Set结尾,返回值是Set集合,数据唯一

s结尾,返回值类是Collection,List或者数组

1.3HashMap方法演示

package com.test;

import java.util.Collection;

import java.util.HashMap;

import java.util.Set;

public class Demo1 {

public static void main(String[] args) {

/*

* Map是一接口,没有自己的类对象,这里是Map接口实现类的HashMap做方法演示

*/

HashMap<String, Integer> map1 = new HashMap<String, Integer>();

map1.put("Dior 999", 280);

map1.put("YSL", 220);

map1.put("Mac", 180);

map1.put("阿尼玛 405", 230);

System.out.println(map1);

HashMap<String, Integer> map2 = new HashMap<String, Integer>();

map2.put("TF", 179);

map2.put("雅诗兰黛", 229);

map1.putAll(map2);

System.out.println(map1);

map1.put("阿尼玛 405", 280);

System.out.println(map1);

System.out.println(map1.size());

System.out.println(map1.isEmpty());

System.out.println(map1.containsKey("YSL"));

System.out.println(map1.containsValue("杨树林"));

System.out.println(map1.containsValue(179));

System.out.println(map1.containsValue(100));

Set<String> KeySet = map1.keySet();

System.out.println(KeySet);

Collection<Integer> values = map1.values();

System.out.println(values);

}

}

1.4TreeMap演示

package com.test;

import java.util.TreeMap;

public class Demo2 {

public static void main(String[] args) {

TreeMap<Person, Integer> treeMap = new TreeMap<Person, Integer>(new MyComparator());

Person person = new Person(1, "骚磊" , 16);

treeMap.put(person, 100);

treeMap.put(new Person(2, "骚杰", 26), 100);

treeMap.put(new Person(3, "宝哥", 16), 200);

treeMap.put(new Person(2, "茂林", 56), 100);

treeMap.put(new Person(2, "康爷", 76), 100);

treeMap.put(new Person(2, "大熊", 26), 200);

System.out.println(treeMap);

System.out.println(treeMap.size());

treeMap.put(new Person(6, "大熊", 96) , 200);

System.out.println(treeMap);

System.out.println(treeMap.size());

person.setAge(96);

System.out.println(treeMap);

}

}

package com.test;

public class Person {

private int id;

private String name;

private int age;

public Person() {}

public Person(int id, String name, int age) {

this.id = id;

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

package com.test;

import java.util.Comparator;

public class MyComparator implements Comparator<Person> {

@Override

public int compare(Person o1, Person o2) {

return o1.getAge() - o2.getAge();

}

}

1.5关于Map键值对整体思想

Map双边队列中把Key和Value进行一个封装操作,完全按照一个数据类型来处理

class Entry<K, V> {

K k;

V v;

.....

}

Map双边队列中提供了操作Entry的方法

    Set<Map.Entry<K, V>>entrySet();

返回值类型是Entry键值对形式数据的Set集合

Set<Map.Entry<K,V>>

Map.Entry<K,V>Map接口的内部接口Entry,使用的泛型 K,V对应Map

创建过程中约束的K,V

因为返回值是Set集合,集合中带有泛型 Set<Map 接口中的内部接口Entry>

Entry对应的API

K getKey();

V getValue();

V setValue(V  value );

1.6小总结

1Map很重要,尤其是HashMap,键值对操作在后期开发中非常常见

数据库,Session Cookie 数据传递 Json XML..

2比较器接口一定要学会使用!!!

Comparator 【重点】自由度非常高,满足各种条件!!!

Comparator

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。