zoukankan      html  css  js  c++  java
  • 2019.3.15 集合框架

    集合框架

    • 啥是集合?集合框架有什么特点
      所谓集合,就是把若干个对象放到一起的容器。

    • 当我们讨论集合框架的特点时,首先我们来想一想数组的特点:

      • No.1,数组中存的都是相同类型的数据;
      • No.2,数组的长度,一旦定义好了之后长度无法改变;
      • No.3,数组是有序的,使用下标来取值
    • 根据数组的特点,我们对比集合框架的特点:

      • 1.不限长度;
      • 2.不限类型;
    • 在系统层面,集合框架包含以下内容:

      • 1.接口
      • 2.(接口的)实现类
      • 3.算法(搜索,排序)

    Collection (接口)

    注:collection接口中没有获取元素的操作。

    当创建对象后——
    Collection collection = new ArrayList(); //ArrayList是升级版数组

    1.collection.add(); //添加

    ex:collection.add("张三"); //添加“张三”
    collection.add(22); //添加“22”
    collection.add("刘子博"); //添加“刘子博”
    System.out.println(collection);

    输出:

    2.collection.remove(); //移除

    ex:collection.remove(22); //移除22
    System.out.println(collection);

    输出:

    注:当collection.remove();括号中的参数是对象时,移除第一个与参数相等的

    ex:Student student = new Student(); //自己新建学生类(已省略),创建对象1,属性有姓名和年龄

        student.setName("王六");            //给对象1赋值
        student.setAge(20);
    
        Student student1 = new Student();    //创建对象2
    
        student1.setName("王五");            //给对象2赋值
        student1.setAge(14);
    
        collection.add(student);                //add对象1
        collection.add(student1);               //add两次对象2作为测试
        collection.add(student1);
    
        System.out.println(collection);
        collection.remove(student1);
        System.out.println(collection);
    

    输出:

    3.collection.size(); //计算长度

    ex:System.out.println(collection.size()); //因为上个操作将“22”移除,所以此时只有两个数据

    输出:

    4.collection.contains(); //看括号中的参数是否在集合中存在,返回布尔值
    //即看集合中是否包含某个元素

    ex:System.out.println(collection.contains("张三"));

    输出:

    5.collection.isEmpty(); //判断集合是否为空,返回布尔值

    ex:System.out.println(collection.isEmpty());

    输出:

    6.collection.addAll(); //把另一个集合中所有的元素加入自己这里

    ex:Collection newC = new ArrayList(); //新建一个对象并赋值
    newC.add("李四");
    newC.add(100);

        collection.addAll(newC);
        System.out.println(collection);
    

    输出:

    7.collection.removeAll(); //移除和参数给定数组中一样的元素

    ex:collection.removeAll(newC);

    8.collection.clear(); //清除集合中所有元素

    ex:collection.clear();
    System.out.println(collection);

    输出:


    下面我们了解关于Collection的子接口(Map不是子接口)

    List

    当创建对象后——
    List list = new ArrayList();

    1.list.add(); //在某个位置加入新元素 格式(下标,要加的东西)

    ex:list.add("赵六");
    list.add("王八");
    list.add("钱七");
    System.out.println(list);

        list.add(1,"周九");    //在1号位置添加“周九”
        System.out.println(list);
    

    输出:

    2.list.get(); //按下标有序取值 括号中填下标

    ex:System.out.println(list.get(2)); //取2号下标的数据

    输出:

    3.list.set(); //按下标修改 括号中填下标

    ex:list.set(2,"王久"); //将2号下标数据更改为“王久”
    System.out.println(list);

    输出:

    4.list.remove(); //按下标删除 括号中填下标

    ex:list.remove(2);
    System.out.println(list);

    输出:

    5.三种方法遍历list

    (1)使用for循环——有下标的传统遍历
    ex:for (int i = 0;i < list.size();i++){

            System.out.println("下标为" + i + "的元素是" + list.get(i));
         }
    

    输出:

    (2)使用foreach方法——只想遍历元素不关心下标(快捷键list.for回车)
    注:此处Object o = list.get(i)
    ex:for (Object o : list) {

            System.out.println(o);
        }
    

    输出:

    (3)使用迭代器——1.使用集合对象创建迭代器,迭代器不关心顺序
    2.如果需要在遍历过程中对list的元素个数进行修改,只能使用迭代器
    ex:Iterator iterator = list.iterator();
    while (iterator.hasNext()){

             Object o = iterator.next();
             System.out.println(o);
         }
    

    输出:


    Set

    set的特点:1.无序
    2.元素不能重复
    所以,set接口经常用于去重

    当创建对象后——
    Set set = new HashSet();

    1.set.add();

    ex:set.add("张三");
    set.add("张三");
    set.add("张三");
    set.add("李四");
    System.out.println(set);
    System.out.println(set.size());

    输出:

    练习:将1000个0-29的随机数添加到set中
    解答:System.out.println("将1000个0-29的随机数添加到set中");
    Random random = new Random();
    for (int i = 0; i < 1000; i++) {
    int a = random.nextInt(30);
    set.add(a);
    }
    System.out.println(set);
    System.out.println(set.size());
    输出:

    2.遍历set
    (1)用foreach遍历set
    ex:System.out.println("用foreach遍历set");
    for (Object o : set) {

            System.out.println(o);
        }
    

    输出:
    图太长了就截一半了

    (2)用迭代器遍历set
    ex:System.out.println("用迭代器遍历set");
    Iterator iterator1 = set.iterator();
    while (iterator1.hasNext()){

            Object o = iterator1.next();
            System.out.println(o);
        }
    

    输出:
    图太长了就截一半了


    Map

    Map的特点:
    1.Map是 用来储存“键值对(key - value)”的集合。
    2.存储数据无序。
    3.每个key对应一个value,key不能重复,如果重复后来的值会覆盖之前的值。
    4.可以通过key来描述value的作用。

    当创建对象后——
    Map map = new HashMap();

    1.map.put(key,value); //添加数据 修改数据

    ex:map.put("name","张三");
    map.put("name","李四");
    map.put("address","大连");
    map.put("age",44);
    map.put("hobby","跑步");

    **2.map.get(key); //根据key来获取值
    注:如果前一个key和后一个key相等,前一个key-value中的value会被覆盖。

    ex:System.out.println(map.get("name"));

    输出:

    3.map.isEmpty(); //看是否为空,返回布尔值

    ex:System.out.println(map.isEmpty());

    输出:

    4.map.remove(key); //根据key移除

    ex:map.remove("name");
    System.out.println(map);

    输出:

    5.map.containsKey(key);和map.containsValue(value); //判断key或者value是否存在,返回布尔值

    ex:System.out.println(map.containsKey("address"));
    System.out.println(map.containsValue("张三"));

    输出:

    6.map.size(); //获取map的大小

    ex:System.out.println(map.size());

    输出:

    7.map.keySet();和map.values(); //获取所有的key或value

    ex:System.out.println(map.keySet()); //key
    System.out.println(map.values()); //value

    输出:

    8.遍历map
    (1)遍历所有的key和value——相当于遍历所有的key
    ex:Set allkeys = map.keySet();
    for (Object key : allkeys) {

             System.out.println(key + "---" + map.get(key));
    
         }
    

    输出:

    (2)遍历所有的value
    ex:Collection values = map.values();
    for (Object value : values) {

            System.out.println(value);
        }
    

    输出:


    泛型

    • 啥是泛型?
      泛型<尖括号里面的东西叫泛型>。
    • 泛型有啥用?
      有时候在集合中需要限制对象的类型。

    新建对象——
    List stuList = new ArrayList<>();

        Student stu = new Student();
        stuList.add(stu);
        for (Student student2 : stuList) {
    
            System.out.println(student2);
        }
    
        //map的泛型
        Map<String,Student> map1 = new HashMap<>();
    
        Map<String,List<String>> map2 = new HashMap<>();
    

    代码及工程

    链接:https://pan.baidu.com/s/1_M-cp3AgEUfg0XK9mjCmpw
    提取码:i8ft

  • 相关阅读:
    SQL性能优化思路
    EF Migraiton错误解决
    How to resolve the 403 error when send POST request from Postman
    Disable trigger to avoid the ID is auto-updated
    MBG(Mybatis Generator)配置
    Publish Web Site To IIS From VS
    quickSort算法导论版实现
    Clang与libc++abi库安装
    Clang与libc++abi库安装
    整数中1 的个数
  • 原文地址:https://www.cnblogs.com/lzb1234/p/10542760.html
Copyright © 2011-2022 走看看