day09-集合【Map、可变参数、Collections】

  1. Map接口

    Map集合是使用两个列来存储数据,存储的每个元素都包含了两个数据(键和值),所以map中的一个元素就是一个键值对;

    特点:

    1.Map每个元素由键与值两部分组成
    2.Map键不能重复,每个键对应一个值
    3.键和值可以为null    
    

    *要想得到每个键值对中的value,必须通过key得到。

    常用的实现类:
    HashMap:使用Hadh表存储数据;
    LinkedHashMap: 是用链表+Hash表存储数据;

2.HashMap类

先看map中的方法;
创建Map类型的对象,调用里面的方法:
    Map map=new HashMap();
常用方法:
    查API

3.遍历Map集合的方式:

1.第一种方式:Set<K> keySet();
    1.先得到key的集合;
    Set<String>keySet=map.keySet();

    2.遍历key的集合,得到每一个key;
    for(String key:keySet){
    3.通过key得到value;
    String value=map.get(key);

2.第二种方式:

    1.先得到键值对的关系的集合;
    Set<Entry<String,String>>entrySet=map.entrySet();
    2.遍历键值对的关系的集合,得到每个键值对的关系的对象;
    for(Entry<String,String>entry:entrySet){
    3.通过键值对的关系对象,得到键和值;
    String key=entry.getKey();
    String value=entry.getValue();

4.HashMap存储自定义类型键值

三国演义:

    曹操
    刘备
    孙权

水浒传:

    宋江
    武松
    门庆哥

西游记:

    孙悟空
    八戒
    白骨精

把这电视剧的中角色分类存储在map集合中;按照电视剧的名字分类;

分析:

    1.使用三个ArrayList集合分别存储三个电视剧中的角色;

    2.使用电视剧的名字作为key,在map中存储三类角色;

代码:

    public class HashMapDemo {

        public static void main(String[] args) {

            ArrayList<String> list1 = new ArrayList<String>();
            ArrayList<String> list2 = new ArrayList<String>();
            ArrayList<String> list3 = new ArrayList<String>();

            list1.add("曹操");
            list1.add("刘备");
            list1.add("孙权");

            list2.add("宋江");
            list2.add("武松");
            list2.add("门庆哥");


            list3.add("孙悟空");
            list3.add("八戒");
            list3.add("白骨精");


            Map<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();

            map.put("三国演义", list1);
            map.put("水浒传", list2);
            map.put("西游记", list3);

            Set<Entry<String, ArrayList<String>>> entrySet = map.entrySet();

            for (Entry<String, ArrayList<String>> entry : entrySet) {
                String key = entry.getKey();
                System.out.println(key);
                ArrayList<String> value = entry.getValue();
                for (String name : value) {
                    System.out.println(name);
                }
                System.out.println("--------------");
            }

        }

    }

5.可变参数

从JDK1.5开始添加的这个功能;

格式:
    修饰符  返回值类型  方法名(数据类型...变量名){
                方法体;
        }

    数据类型...变量名  :表示可变参数,表示省略了0个或多个 这个类型的参数;

    例如:
        public int sum(int...i){
            renturn 返回值;
        }
    其中int。。。i,表示省略了0个或多个这个类型的参数;

    作用:
        提高了方法代码的重复使用率;
        扩展了方法的功能;

    public String contact(String...s){
        renturn 返回字符串拼接的结果;
        }

6.Collections类

一个用来操作集合的工具类;

方法:
    static void sort(List<T> list):对list集合中的元素进行自然升序的排序;
    (对中文的元素不能排序);
    static void shuffle(List<T> list):把list集合中的元素随机打乱;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章