一、Map常用方法详解
/*
关于Map集合中常用的方法
void clear(); 清空Map
boolean containsKey(Object key); 判断Map中是否包含这样的Key
boolean containsValue(Object value); 判断Map中是否包含这样的value
Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系视图
Object get(Object key);通过key获取value
Object put(Object key,Object value);向集合中添加键值对
boolean isEmpty();判断集合是否为空
Object remove(Object key); 通过Key将键值对删除
int size();获取Map中键值对的个数
Set KeySet();获取集合中所有的key
Collection value();获取Map集合中所有的value
*/
import java.util.*;
public class MapTest01{
public static void main(String[] args){
//创建Map集合
Map persons = new HashMap();//HashMap的默认初始化容量是16,默认加载因子是0.75
//存储键值对
persons.put("10000","JACK");
persons.put("10011","JACK");
persons.put("10002","SUN");
persons.put("10003","COOK");
persons.put("10004","KING");
persons.put("10000","LuCY");
//1、判断键值对的个数
//Map中的Key是无序不可重复的,和HashSet相同
System.out.println(persons.size());
//2、判断集合中是否包含这样的Key
System.out.println(persons.containsKey("10000"));//true
//3、判断集合中是否包含这样的value
//注意:Map中如果Key重复了,value采用的是“覆盖”
System.out.println(persons.containsValue("LUCY"));//true
//4、通过Key获取Value
String k = "10002";
Object v = persons.get(k);
System.out.println(v);//SUN
//5、通过Key删除键值对
persons.remove("10002");
System.out.println(persons.size());
//6、获取所有的value
Collection values = persons.values();
Iterator it = values.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
//7、获取所有的Key
Set keys = persons.KeySet();
Iterator it2 = keys.iterator();
while(it2.hasNext()){
Object id = it.next();
Object name = persons.get(id);
System.out.println(id+"-->"+name);
}
//8、entrySet(不常用)
//将Map转换成Set集合
Set entrySet = persons.entrySet();
Ierator it3 = entrySet.iterator();
while(it3.hasNext()){
System.out.println(it3.next());
}
}
}
二、Hashtable_Properties介绍
HashMap默认初始化容量16,默认加载因子0.75
Hashtable默认初始化容量11,默认加载因子是0.75
java.util.Properties;也是由Key和Value组成,但是key和value都是字符串类型
import java.util.Properties;
public class MapTest02{
public static void main(String[] args){
//创建属性类对象
Properties p = new Properties();
//存储
p.setProperty("age","12");
p.setProperty("name","JACK");
//取出
String v1 = p.getProperty("age");
String v2 = p.getProperty("name");
//打印
System.out.println(v1);
System.out.println(v2);
}
}
三、可以自动排序的TreeMap
SortedMap 中Key特点:无序不可重复,但是存进去的元素可以按照大小自动排序
如果想自动排序:Key部分元素需要:1、实现Comparable接口 2、单独写一个比较器
import java.util.*;
public class SortedMapTest01{
public static void main(String[] args){
//Map,Key存储Product,value存储重量
//SortedMap products = new TreeMap();
//匿名内部类(单独写一个比较器)
SortedMap products = new TreeMap(new Comparator(){
public int compare(Object o1,Object o2){
double price1 = ((Product)o1).price;
double price2 = ((Product)o2).price;
if(price1<price2){
return -1;
}else if(price1>price2){
return 1;
}else{
return 0;
}
}
});
//准备对象
Product p1 = new Product("西瓜",1.0);
Product p2 = new Product("苹果",4.0);
Product p3 = new Product("桃子",5.0);
Product p4 = new Product("香蕉",3.0);
//添加
products.put(p1,8.0);
products.put(p2,3.0);
products.put(p3,4.0);
products.put(p4,10.0);
//遍历
Set key = products.KeySet();
Iterator it = key.iterator();
while(it.hasNext()){
Object k = it.next();
Object v = products.get(k);
System.out.println(k+"--->"+v+"kg");
}
}
}
class Product{
String name;
double price;
Product(String name,double price){
this.name = name;
this.price = price;
}
public String toString(){
return "Product[name="+name+",price="+price+"]";
}
}
参考:https://www.bilibili.com/video/BV1kx411h7jv