自学javaSE-Map

一、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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Antgeek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值