day20 map

1.map

  • collection每次存仅一个,单列;map每次存两个,双列
  • map映射关系,键值对,键不能重复,值能重复
  • map本身是接口,仅能用hashmap,linkedhashmap
  • hashset本身是hashmap,键需要保证唯一性,重写hashcode,equals
  • put(k,v)存;get()取
map map=new hashmap<>();
map.put();
使用多态会增强扩展性
put一般返回null,如果存相同键则会返回被覆盖的值
map.get(key)会返回key对应value,如果无此值则会返回null
  • remove(key),删除对应v,返回被删除的v
  • keyset();
set set=map.keyset();
将map所有键存在set中
之后用增强for或iterator遍历
  • 每一个对象均有getclass,获得本类class名称
  • keyset返回getclass是hashset$ketset,$表示内部
  • map中static entry接口,entry是将键值关系封装成对象,Map.entryset()返回set>,entry.getkey和entry.getkey可以获得map中的键值
Map  perMap=classNameIterator.next().getValue();
        
        Set> perEntrySet=perMap.entrySet();
        Iterator> perEntryit=perEntrySet.iterator();
        while (perEntryit.hasNext()) {
            Person per=perEntryit.next().getValue();
            System.out.println(per.name+"  ,,"+per.age);

        }
这个map中是一个自定义Person类 
entry是类内接口Map.Entry
增强for同效
  • 增强for不能遍历map,是遍历map.entryset返回的set类
  • map存对象为键时候需保证对象唯一性,在对象中重写hashcode和equals方法
  • alt+shift+s相当于右键

2.linkedhashmap用法相同但是保证了迭代顺序

3.map接口实现类hashtable底层均是哈希表和hashmap一样
hashtable同步·慢被抛弃,并且不能存null,hashmap快,允许存null

  • 但hashtable子类propreties和io结合可以永久存储还在使用

4.静态导入

  • 减少代码量
import static java.lang.System.out
则在syso时候就不用写system了
注意最末层必须是静态成员,如out

5.方法可变参

public void name(String a,int...b)
 每个方法仅能有一个可变参,
可变参必须写在参数列表最后
可变参必须固定类型
可变参返回是一个数组

6.集合操作工具类

  • 静态方法,collections.sort,升序
  • Collections.binarySearch(list, key),二分法查找key,没有返回(-插入点-1)
  • Collections.shuffle(list)打乱集合顺序
  • 集合嵌套,集合中有集合元素,嵌套for遍历
  • 简体中没有♥图形,存储时候需要utf-8
  • 斗地主发牌重点是用一个list相对应牌号存在map中,操作的是list,只有看牌时候才会用list来对应map中value牌值
    sort整牌,shuffle洗牌
    嵌套数组1~13,和四种花色{"♥","♣","♦","♠")+大小王完成一副牌

你可能感兴趣的:(day20 map)