美文网首页
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