美文网首页
2020-06-11常用数据集合List,Map,Set

2020-06-11常用数据集合List,Map,Set

作者: testerPM | 来源:发表于2020-06-11 10:15 被阅读0次

    开始之前,先讲一个String字符串类型,看到String,大家觉得它是一个类,还是一个普通的数据类型呢???
    从写法上看String开头大写,便可以猜测它一个类(引用数据类型),是java提供封装好的类(是jdk/jre/lib/rt.jar包提供的String.class)

    ArrayList

    ArrayList是一个容器.
    容器支持的数据类型: 支持引用数据类型(包括:类,接口,枚举,数组)

    容器特点:
    1.数据排序:有序
    index:0-> hello
    index:1-> world
    index:n-> ....
    2.数据重复性:可重复

    ArrayList常用Api
    创建ArrayList list=new ArrayList();

    1. 往集合添加数据
      list.add(...);
      2.从集合中去取出数据
      list.get(index);
      3.从集合中移除数据
      list.remove(...);

    4.获取list集合的大小(长度): size()
    5.其他api:
    isEmpty(..),判断集合是否空
    contains(..),判断是否包含某数据
    set(.),修改某个位置

    代码示例如下:

    public static void main(String[] args) {
    
        // 保存昵称Tom到内存中
        String nickName = "Tom";
    
            // 存放N个同学昵称怎么办呢?——>这里用集合ArrayList
    
            // ArrayList:集合数组列表且是可变的集合数组
        // ArrayList最大索引是集合长度减1: list.size()-1
        // ArrayList使用需要创建对象
        // 为什么要创建对象,因为 ArrayList从命名规范上看它其实一个类,类中提供的api,需要实例化对象才可以调用
        // <>尖括号用来存放数据的数据类型(且只能是引用数据类型),这里要存放的是nickName(String类型)
    
        // 创建ArrayList 集合对象
        ArrayList<String> list = new ArrayList<>();
            // 添加数据
            list.add("Tom");
            list.add("rose");
            list.add("jon");
            // 取出数据
            System.out.println(list.get(0));
            System.out.println(list.get(1));
            System.out.println(list.get(2));
    
            // 修改数据
            list.set(0, "Rtom");//0代表索引位置
            System.out.println(list.get(0));
            // 移除数据
    
            list.remove(0);
            System.out.println(list.get(0));
    
            // 判断集合是否为空
            System.out.println(list.isEmpty());
            // 判断集合是否包含某个字符
            System.out.println(list.contains("jont"));
    
        }
    
    

    打印结果如下:
    Tom
    rose
    jon
    Rtom
    rose
    false
    false

    ArrayList循环打印

    (1) 普通for循环

    public static void main(String[] args) {
    
        ArrayList<String> list = new ArrayList<>();
        // 添加数据
        list.add("Tom");
        list.add("rose");
        list.add("jon");
         //循环取出list集合中的元素
         for(int index=0;index<=list.size()-1;index++){
             System.out.println(list.get(index));
         }
         
         
            
        }
    
    
    

    打印结果:
    Tom
    rose
    jon

    (2)增强for循环:foreach ->jdk1.5以后的新特性,推荐使用


    image.png
        public static void main(String[] args) {
            System.out.println(age);
            ArrayList<String> list = new ArrayList<>();
            // 添加数据
            list.add("Tom");
            list.add("rose");
            list.add("jon");
      //eclispe 输入fore可以自动输出增强for循环
            for (String name : list) {//list是集合实例对象,name是用来接收list遍历元素
                System.out.println(name);
    
            }
    
        }
    
    

    HashSet

    image.png
    image.png

    常见api示例代码:

    
    
        public static void main(String[] args) {
            
            //创建HaspSet对象:<E>是要填写的set集合需要放入的数据类型
           HashSet<String>  set =new HashSet<>();
    //集合添加元素
           set.add("tom");
           set.add("tom");
           set.add("jones");
           set.add("hello");
           //获取set集合大小
           System.out.println(set.size());//输出结果为3
    
        }
    
    

    上述代码获取集合大小为什么是3呢??-》因为set集合特点是 不可重复,而上述代码中tom元素添加了2次,是重复的元素,占用的是同一个内存,所以集合大小是3

    其他举例:

    
    public static void main(String[] args) {
            
            //创建HaspSet对象:<E>是要填写的set集合需要放入的数据类型
           HashSet<String>  set =new HashSet<>();
           set.add("tom");
           set.add("tom");
           set.add("jones");
           set.add("hello");
           set.remove("tom");
          System.out.println(set.isEmpty()); 
          System.out.println(  set.contains("hello")); 
          //清空set集合
           set.clear();
           System.out.println(set.size());//输出集合大小为0
           
           
    
        }
    
    

    上面打印结果:
    false
    true
    0

    HaspSet增强for循环

    image.png

    上图代码如下:

    
    public static void main(String[] args) {
    
            // 创建HaspSet对象:<E>是要填写的set集合需要放入的数据类型
            HashSet<String> set = new HashSet<>();
            set.add("tom");
            set.add("tom");
            set.add("jones");
            set.add("hello");
            set.remove("tom");
            set.add("world");
            set.add("helloworld");
            // 增强for循环
    
            for (String name : set) {
                System.out.println(name);
    
            }
    
        }
    

    HaspMap

    image.png
    image.png

    常见Api代码示例如下:

        public static void main(String[] args) {
    
            // 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
           HashMap<String ,String> map=new HashMap<>();
           //map集合添加元素 map.put(key,value)
             map.put("name", "tom");
             map .put("age", "20");
             map.put("sex", "male");
             map.put("name","jones");
             System.out.println(map.size());//key不能重复,所以集合大小为3
             //通过key取值
             System.out.println(map.get("name"));
             //移除:通过key移除对应的vaule
             map.remove("name");
             System.out.println(map.get("name"));//输出为null,key缺省值时默认为null
        }
    
    }
    
    
    

    上述代码执行结果:
    3
    jones
    null

    因为:key不能重复,如果重复,后者键值对覆盖前者,随意集合大小为3,name对应的value是jones,
    key缺省默认值是null

    HaspMap循环

    (1)获取所有的key

        public static void main(String[] args) {
    
            // 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
            HashMap<String, String> map = new HashMap<>();
            // map集合添加元素 map.put(key,value)
            map.put("name", "tom");
            map.put("age", "20");
            map.put("sex", "male");
            map.put("name", "jones");
    
            // 获取所有的key:map调用keySet(),返回值类型是Set接口
    
            Set<String> keySet = map.keySet();
            for (String key : keySet) {
                System.out.println(key);
            }
    
        }
    
    

    打印结果:map也是无序的
    sex
    name
    age

    (2)获取所有的value

        public static void main(String[] args) {
    
            // 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
            HashMap<String, String> map = new HashMap<>();
            // map集合添加元素 map.put(key,value)
            map.put("name", "tom");
            map.put("age", "20");
            map.put("sex", "male");
            map.put("name", "jones");
    
            // 获取所有的key:map盗用values(),返回值类型是Collection(是个接口)
    
            Collection<String> values = map.values();
    
            for (String value : values) {
                System.out.println(value);
    
            }
        }
    
    
    

    打印结果:

    male
    jones
    20

    (3)通过key获取对应的值

    
        public static void main(String[] args) {
    
            // 创建HaspMap对象:<E,E>是要填写的map集合需要放入的数据类型
            HashMap<String, String> map = new HashMap<>();
            // map集合添加元素 map.put(key,value)
            map.put("name", "tom");
            map.put("age", "20");
            map.put("sex", "male");
            map.put("name", "jones");
    
            // 获取所有的key:map调用keySet(),返回值类型是Set(是一个接口)
            Set<String> keySet = map.keySet();
            for (String key : keySet) {
                System.out.println(map.get(key));
    
            }
    
        }
    
    
    

    打印结果:
    male
    jones
    20

    相关文章

      网友评论

          本文标题:2020-06-11常用数据集合List,Map,Set

          本文链接:https://www.haomeiwen.com/subject/omvvtktx.html