java HashMap,TreeMap

Map 映射 通过某一个key可以直接定位到一个value值

存储的方式 键值对 存储  key-value

key无序无重复  value无序可重复

key无序还是一样  指的是存入顺序与取得顺序不一致

key无重复 元素不能一样;

1.map基本使用

  HashMap

  TreeMap

  Properites(读取文件的信息)

HashMap

1.包 java.util

2.如何创建对象

3.基本方法

  增删改查

  put  存放一组映射关系 key-value

    1.key存储的顺序与取得顺序不同;

    2.不同的key可以存储相同的value

    3.key若有相同的 则将 原来的value覆盖而不是拒绝存入(跟set刚好相反)

   删 E=remove(key);

  改 put(key,value1) put(key,value2)  replace(key,newValue)

  查 E=get(key)

  遍历map集合? 获取到所有的key  遍历key  通过key获取value

  size()

4.除了上述几个常用的方法外,其它API中提供的方法

  clear  containsKey(key)  containsValue(value)

  getOrDefault(key,defaultValue);如果key存在就返回对应的value;若没有找到,则返回默认值;

  isEmpty()

  putAll(另一个map);

  putIfAbsent(key,value);如果key不存在才向集合内添加 如果key存在就不添加啦

5.map集合在什么情形下用?

  1.想要存储一组元素

    数组 or 集合 如果存储的元素以后长度不变用数组 如果长度以后不确定 用集合;

  2.如果发现长度以后不确定 -->集合

    List Set Map

    List家族有序的 存储有顺序用这个

      ArrayList  更适合遍历轮询;(Vector)

      LinkedList 更适合插入和删除

      Stack LIFO

    Set家族无重复 存储元素希望自动去掉重复元素用这个

      Hash 性能更高

      Tree 希望存进去的元素自动去重复  同时还能自动排序

    Map家族k-v 通过唯一的k快速找寻v用这个;

      Hash  性能更高

      Tree 系统存进去的元素key自动排序;

  6.登录小流程

import java.util.*;
//3种方式实现登录
public class Test0521{
	/*
	public String login(String name,String password){
		String[] a=new String[]{"张三","李四","王五"};
		int[] p=new int[]{123,456,789};
		for(int i=0;i<a.length;i++){
			if(a[i].equals(name)){
				if(p[i]==Integer.parseInt(password)){										
					return "登录成功!";						
				}
			break;	
			}			
		}	
		return "账号或密码错误!!";
	}
	public static void main(String[] args){
		Test0521 x=new Test0521();
		System.out.println(x.login("张三","789"));
	}
	*/
	/*
	private ArrayList<String> a=new ArrayList<String>();
	{
		a.add("张三-123");
		a.add("张四-456");
		a.add("李留-789");
	}
	public String login(String name,String password){
		for(int i=0;i<a.size();i++){
			String[] ap=a.get(i).split("-");
			if(ap[0].equals(name)){
				if(ap[1].equals(password)){
					return "登录成功!";
				}
				break;
			}			
		}
		return "账号或密码错误!!";
	}
	public static void main(String[] args){
		Test0521 x=new Test0521();
		System.out.println(x.login("李留","89"));
	}
	*/
	/*
	private HashSet<String> a=new HashSet<String>();
	{
	a.add(new String("张三-123"));
	a.add("张四-456");
	a.add("李留-789");
	}
	public String login(String name,String password){
		Iterator<String> m=a.iterator();
		
		while(m.hasNext()){
			String[] n=m.next().split("-");
			if(n[0].equals(name)){
				if(n[1].equals(password)){
					return "登录成功!";
				}
				break;
			}			
		}
		return "账号或密码错误!!";
	}
	public static void main(String[] args){
		Test0521 x=new Test0521();
		System.out.println(x.login("三","789"));
	}
	*/
	/*
	static HashMap<Integer,String> a=new HashMap<Integer,String>();
	{
		a.put(0,"zhangsan-123");
		a.put(1,"lihua-456");
		a.put(2,"老刘-789");		
	}
	public String login(String n,String p){
		Set<Integer> keys=a.keySet();
		Iterator<Integer> ti=keys.iterator();		
		while(ti.hasNext()){
			Integer i=ti.next();
			String[] ac=a.get(i).split("-");
			if(ac[0].equals(n)){
				if(ac[1].equals(p)){					
					return "登录成功!";
				}
				break;
			}
		}
		return "账号或密码错误!!";
	}//HashMap 方式一
	*/
	private HashMap<String,String> a=new HashMap<String,String>();
	{
		a.put("zhangsan","123");
		a.put("lihua","456");
		a.put("老刘","");		
	}
	public String login(String n,String p){
		/*
		Set<String> keys=a.keySet();
		Iterator<String> ti=keys.iterator();		
		while(ti.hasNext()){
			String i=ti.next();
			String ps=a.get(i);
			if(i.equals(n)){
				if(ps.equals(p)){					
					return "登录成功!";
				}
				break;
			}
		}//方式一
		return "账号或密码错误!!";
		*/
		if((a.get(n))!=null && p.equals(a.get(n))){
			
			return "登录成功!";//个人认为(a.get(n))!=null && 可不需要
		}//HashMap 方式二
		return "账号或密码错误!!";
		
		
	}
	public static void main(String[] args){
		Test0521 x=new Test0521();		
		System.out.println(x.login("老刘klj",""));
	}		
}

  7.HashMap底层的数据结构存储

    散列表的形式  数组+链表

   

 

import java.util.*;
import java.util.Map.Entry;

public class Test0521{
	public static void main(String[] args){
		HashMap<Integer,String> a=new HashMap<Integer,String>();
		a.put(0,"abc");//增
		a.put(9,"ab");
		a.put(2,"a2b");
		a.put(0,"a0b");
		a.put(8,"ab");
		System.out.println(a);
		System.out.println(a.remove(0));//删除
		System.out.println(a);
		//a.put(2,"bc");//改
		a.replace(2,"bc");//改
		System.out.println(a);
		System.out.println(a.get(2));//查
		System.out.println(a);
		//获取集合的全部key		
		Set<Integer> keys=a.keySet();//Set集合
		Iterator<Integer> it=keys.iterator();
		while(it.hasNext()){
			Integer k=it.next();
			System.out.println(k+"---"+a.get(k));			
		}//遍历方式1
		System.out.println("有效元素个数:"+a.size());
		Set<Entry<Integer,String>> mn=a.entrySet();
		Iterator<Entry<Integer,String>> ii=mn.iterator();
		while(ii.hasNext()){
			Entry<Integer,String> nn=ii.next();
			Integer kk=nn.getKey();
			String vv=nn.getValue();
			System.out.println(kk+"-->"+vv);			
		}//遍历方式2
	}
}

 ------------------------------------------------------------------------------------------------------------

 TreeMap  自然有序 按照Unicode编码自然有序

  1.java.util包

  2.构造方法

    无参数 带map参数

  3.常用方法

    put get remove replace  size

  4.底层数据结构的存储

    红黑二叉树 

  

import java.util.*;
public class Test0521{
	public static void main(String[] args){
		TreeMap<Integer,String> a=new TreeMap<Integer,String>();
		a.put(0,"a");
		a.put(1,"b");
		a.put(7,"k");
		a.put(3,"ef");
		System.out.println(a);
	}
}

  

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/12941533.html