day13:Map/可变参数

Map
    java.util.Map 双列集合顶层接口
        K: key 键 键是唯一的
V:value 值 值是可以重复的
    方法
        public V put(K key, V value):  把指定的键与指定的值添加到Map集合中。 返回值一般是null值 如果键相同 值会覆盖 会返回被覆盖的值
            map.put
        public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
            map.get
        public boolean containsKey(Object key) 判断是否包含指定键
            map.containsKey
        public V remove(Object key ) 根据键删除一对元素 并返回被删除的值
            map.remove
    常用实现类
        TreeMap
                 键 排序 唯一
            java.util.TreeMap
            特点:
        底层数据结构是红黑树  不允许null键 允许null值
         键 排序  唯一
            构造方法
                public TreeMap() 如果是空参构造 集合中的键 必须实现自然排序接口
public TreeMap(Comparator c)  如果带参构造 需要传入一个比较器对象  键是否实现自然排序接口都可以
public TreeMap(Map m)
                    //获取最小键
Integer firstKey = map.firstKey();
//获取最大键值对
Map.Entry lastEntry = map.lastEntry();
                    //获取 >=指定键的 最小键
Integer ceilingKey = map.ceilingKey(15);
        HashMap
                 键 无序 唯一
            java.util.HashMap
            特点:
         底层数据结构是哈希表   允许null键和null值
          键 无序 唯一
                      先比较hashCode
                            不同  元素不相同  
                            相同  继续比较equals
                                   相同
                                   不同
            HashMap集合 自定义类型作为键 需要重写hashCode和equals方法 保证键的唯一
         LinkedHashMap
                 键 有序 唯一
        java.util.Properties
            特点
                1.继承自Hashtable 实现了Map接口
2.没有泛型 键String 值String
3.唯一一个可以和IO流直接结合使用的集合
            方法
                setProperty(String key,String value)  添加元素  相当于  put
getProperty(Object key) 根据键找值  相当于 get
Set stringPropertyNames() 获取存储键的Set集合  相当于 keySet
                    Properties p = new Properties();
p.setProperty("name","liuyan");
    Map的遍历方式
        方式一
            Set keySet() 获取存储所有键的Set集合
            1.定义Map集合 添加数据
2.调用keySet方法 获取存储所有键的Set集合
3.遍历Set集合 依次获取到每个元素(Map集合的key)
4.调用Map集合的get方法 根据键找到对应的值
                Map map = new HashMap<>();

Set set = map.keySet();

while(it.hasNext()){
            String key = it.next();
            Integer value = map.get(key);
            System.out.println(key+" = "+value);
        }

for(String key : set){
            System.out.println(key+" = "+map.get(key));
        }
        方式二
            Set> entrySet()  获取到存储结婚证(键值对映射关系对象)的Set集合
            1.创建Map集合 添加数据
2.调用entrySet 获取到存储结婚证(键值对映射关系对象)的Set集合
3.遍历Set集合 依次获取到每个结婚证 对象
4.调用结婚证对象的方法 获取到 键 和值
                K getKey()
                V getValue()
                Set> set =  map.entrySet();

Iterator> it = set.iterator();
        while(it.hasNext()){
            Map.Entry en  = it.next();
            String key = en.getKey();
            Integer value = en.getValue();
            System.out.println(key + " = "+value);
        }

        for(Map.Entry en: set){
            System.out.println(en.getKey() + " = "+en.getValue());
        }

可变参数
    前提
        参数类型确定
参数个数不确定
    格式
        数据类型...参数名
可以传入当前类型任意个数据
可变参数本质上就是数组 可以直接传数组
            public static int sum (int...a ){

        int sum = 0;
        for (int i : a) {
            sum += i;
        }
        return  sum;
    }
                int sum2 = sum(10, 20, 30);

int[] arr = {10,20,30,40};
int sum3 = sum(arr);
                ArrayList list = new ArrayList<>();
                Collections.addAll(list,"abc","bcd","aaa","bbb");
    注意事项
 1.一个方法只能有一个可变参数
 2.如果方法有多个参数 可变参数放到最后
 3.最牛的可变参数 Object...obj 任意类型 任意个数
2.记住map实现类型的特点

3.开心,充实

4.汇总Thread 

你可能感兴趣的:(java,servlet,spring)