zoukankan      html  css  js  c++  java
  • 第十五天笔记

    黑马程序员  <a href="http://www.itheima.com" target="blank">java培训</a>

                                 第十五天笔记

    1.Calendar类的概述和获取日历字段方法

    A.Calendar的概述

    作用:它也是一个可以描述时间的类

    注意:Calendar类是java.util包下的,它是一个抽象类

    使用calendar类可以更加方便的对时间进行操作。

    B. Calendar类的基本使用

    Calendar类中提供get方法,它可以通过指定的日历字段来获取时间的值

    Public int get(int filed)

    参数:给定的日历字段

    返回值:这个字段对应的值

    2.Calendar类的add和set方法

       A.add方法

          作用:可以直接对日历字段对应的值进行操作(+或者-)

          Public abstract void add(int filed,int amount)

          参数:

               Filed:要操作的日历字段

               Amount:要对字段进行+ -的操作

       B.set方法

          作用:可以直接对日历字段的值进行操作

        set(int field,int value) 对field字段修改值为value

            set(int year,int month,int date)

    set(int year,int month,int date,int hour,int minute)

    set(int year,int month,int date,int hour,int minute,int second)

    package lm.calendar;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.Scanner;
    
    public class CalendarDemo1 {
    /**
     * 笔试题:求出一个指定年份中的所有周六与周日的日期?
     * @throws ParseException 
     * 
     */
        public static void main(String[] args) throws ParseException {
            //键盘键入一个年份
          Scanner sc=new Scanner(System.in);
          System.out.println("请输入任意一个年份");
          String s=sc.nextLine();
         //将string字符串转换为日期
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
          Date date =sdf.parse(s);
        
           
          //创建一个calendar
           GregorianCalendar ca=new GregorianCalendar();
           ca.setTime(date);
           //System.out.println(ca);
          // ca.get();
           Date date1=new Date();
           date1=ca.getTime();
           
           //得到每年的第一天是星期几
           int n=ca.get(GregorianCalendar.DAY_OF_WEEK);
           ca.set(GregorianCalendar.DAY_OF_WEEK, n+7-n);
           Date date11=ca.getTime();
           int month=ca.get(GregorianCalendar.WEEK_OF_MONTH);
           System.out.println(month);
           for(int i=0;i<12;i++){
           ca.roll(GregorianCalendar.WEDNESDAY, 1);
           Date date12=ca.getTime();
           System.out.println(date12);}
           
           
         
        }
    
    }

    3.如何获取任意年份的2月的天数

    4.对象数组的概述和使用

    A.数组的特点

       存储同一类型的数据

       数组中的元素是有顺序的

       数组的长度是固定的

       数组是一个容器,用于存储数据

    B.怎样声明一个数组

       静态声明:类型[] 数组名={}

       动态声明:类型[] 数组名=new 类型[长度] 动态

                 类型[] 数组名=new 类型[]{}

    C.上面说的类型是指数组元素的类型

    D.对象数组

       声明对象数组的时候,要使用元素的类型来描述

       Student[] sts={s1,s2,s3};

       注意:数组本身就是一种引用类型

    5.数组对象的内存图解

    6.集合的由来与数字的区别

       A.集合

          集合是一个容器,是用于存储对象的

       B.数组和集合

         有了数组以后,在开发中可能还会遇到这样的问题:

         向容器中装入数据,数量不定

         向容器中装入数据,类型不定

       C.集合的特点

         集合长度可以根据元素的个数改变而改变

         集合中元素类型可以不一样

         集合可以有顺序也可以没有顺序

    7.集合的继承体系图解

    8.Collection集合的功能描述

      1.添加功能

         Public boolean add(Object obj){}

         作用:将obj添加到集合中,返回值代表是否添加成功。

         Public boolean addAll(Collection c){}

    作用:将c集合中的所有元素添加到指定的集合中

    2.查找功能

    Public Iterator iterator(){}

    得到一个迭代器,可以遍历集合

    3.删除功能

    Public boolean remove(object obj)

    将集合中obj元素删除,返回值代表是否被删除成功

    Public boolean removeAll(Collection c)

    将集合中与c集合中相同的元素删除

    Public void clear()

    4.修改功能

      它没有直接定义修改操作,因为需要考虑每一个集合的数据结构进行操作。

    5.集合中的判断操作

      A.boolean contains(odject o)

         判断集合是否包含指定元素o

      B.boolean containsAll(odject o)

         判断集合中是否包含指定的子集c

      C.boolean isEmpty()

    判断集合是否为空,如果为空则返回true

     6.获取集合长度:

       Public void size()

       获取集合的长度,相当于数组中的length功能

      7.转换方法

    Public object[] toArray();

    将集合转换成数组

     8.boolean retainAll(Collection<?> c)

       得到两个集合中共同的元素

    package cn.itcast.collection;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Datel
    public class CollectionDemo2 {
    
        public static void main(String[] args) {
            // add();
            // remove();
            // clear();
    
            // contains();
    
            // isEmpty();
            // size();
            toArray();
        }
    
        // 演示toArray方法
        public static void toArray() {
            Collection c = new ArrayList(); // 接口回调
    
            c.add("a");
            c.add("b");
            c.add("c");
            c.add("a");
            Object[] arr = c.toArray();
    
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    
        // 演示size操作
        public static void size() {
            Collection c = new ArrayList(); // 接口回调
    
            System.out.println(c.size());
            c.add("a");
            c.add("b");
            c.add("c");
            c.add("a");
            System.out.println(c.size());
    
        }
    
        // 演示isEmpty操作
        public static void isEmpty() {
            Collection c = new ArrayList(); // 接口回调
    
            System.out.println(c.isEmpty());
            c.add("a");
            c.add("b");
            c.add("c");
            c.add("a");
            System.out.println(c.isEmpty());
    
        }

    9.Collection集合的基本功能测试

    package cn.itcast.collection;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Datel
    public class CollectionDemo2 {
    
        public static void main(String[] args) {
            // add();
            // remove();
            // clear();
    
            // contains();
    
            // isEmpty();
            // size();
            toArray();
        }
    
        // 演示toArray方法
        public static void toArray() {
            Collection c = new ArrayList(); // 接口回调
    
            c.add("a");
            c.add("b");
            c.add("c");
            c.add("a");
            Object[] arr = c.toArray();
    
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    
        // 演示size操作
        public static void size() {
            Collection c = new ArrayList(); // 接口回调
    
            System.out.println(c.size());
            c.add("a");
            c.add("b");
            c.add("c");
            c.add("a");
            System.out.println(c.size());
    
        }
    
        // 演示isEmpty操作
        public static void isEmpty() {
            Collection c = new ArrayList(); // 接口回调
    
            System.out.println(c.isEmpty());
            c.add("a");
            c.add("b");
            c.add("c");
            c.add("a");
            System.out.println(c.isEmpty());
    
        }

    10.Collection集合的高级功能测试

      1.addAll-------并集

      2.removeAll----差集

      3.containsAll---只是判断是否是子集

      4.retainAll----交集

           注意:retainAll方法的返回值,boolean类型的代表提集合对象中的元素是否发生了改变

    ublic class CollectionDemo3 {
    
        public static void main(String[] args) {
            // addAll();
    
            // removeAll();
    
            // containsAll();
            retainAll();
        }
        //retainAll方法得到两个集合中相同 的元素
        public static void retainAll() {
    
            Collection c = new ArrayList();
    
            // c.add("a");
            //
            // c.add("b");
            //
            // c.add("c");
            // c.add("l");
    
            Collection cc = new ArrayList();
            cc.add("d");
            cc.add("e");
            cc.add("f");
            cc.add("k");
    
            boolean flag = c.retainAll(cc);
    
            System.out.println(flag);
    
            System.out.println(c);
            System.out.println(cc);
    
        }
    
        // containsAll
        public static void containsAll() {
    
            Collection c = new ArrayList();
    
            c.add("a");
    
            c.add("b");
    
            c.add("c");
    
            Collection cc = new ArrayList();
            cc.add("a");
            cc.add("d");
    
            boolean flag = c.containsAll(cc);
    
            System.out.println(flag);
    
            System.out.println(c);
            System.out.println(cc);
    
        }
    
        // removeAll方法简单说就是求出两个集合相减的结果
        public static void removeAll() {
    
            Collection c = new ArrayList();
    
            c.add("a");
    
            c.add("b");
    
            c.add("c");
    
            Collection cc = new ArrayList();
            cc.add("a");
            cc.add("d");
    
            boolean flag = c.removeAll(cc);
    
            System.out.println(flag);
    
            System.out.println(c);
            System.out.println(cc);
    
        }
    
        // addAll方法简单说就是将两个集合内容合并
        public static void addAll() {
    
            Collection c = new ArrayList();
    
            c.add("a");
    
            c.add("b");
    
            c.add("c");
    
            Collection cc = new ArrayList();
            cc.add("张三");
            cc.add("李四");
    
            boolean flag = c.addAll(cc);
            System.out.println(flag);
            System.out.println(c);
            System.out.println(cc);
        }
    
    }

    11.集合的遍历之集合转换数组遍历

    可以将集合通过toArray方法将集合转换成Object[],在对数组遍历.

    ublic class CollectionDemo4 {
    
        public static void main(String[] args) {
    
            // 1.向集合中存储10个100以内的随机数
            Collection nums = new ArrayList();
            // A:使用Random类来获取随机数
            Random ran = new Random();
            // B :使用for循环来获取10个随机数
            for (int i = 0; i < 10; i++) {
                int n = ran.nextInt(100);
                nums.add(n); // 集合中不能装基本数据类型,集合的元素只能是Object
                // 注意:在jdk1.5后,提供自动拆箱与装箱功能,所以在向集合中添加基本类型数据时,会自动的包装成其对应的包装类对象。
            }
            
            System.out.println(nums);
            System.out.println("-----------------------");
    
            // 2.将集合转换成数组,在对数组遍历
            Object[] objs = nums.toArray();
    
            for (int i = 0; i < objs.length; i++) {
                int obj = (Integer) objs[i]; // 自动拆箱功能
                System.out.println(obj);
            }
        }
    }

    12.Collection存储自定义对象并遍历

    //将集合中存储自定义对象
    public class CollectionDemo5 {
    
        public static void main(String[] args) {
            // 1.创建一个集合
            Collection c = new ArrayList();
    
            // 2.向集合中添加三个Person对象.
            Person p1 = new Person(1, "张三丰");
            Person p2 = new Person(2, "滤镜");
            Person p3 = new Person(3, "曹操");
            c.add(p1);
            c.add(p2);
            c.add(p3);
    
            // 3.通过toArray方法转换成Object数组
            Object[] objs = c.toArray();
    
            // 4.遍历数组
            for (int i = 0; i < objs.length; i++) {
                Person p = (Person) objs[i];
                System.out.println(p);
            }
        }
    }
    
    class Person {
        private int id;
        private String name;
    
        public Person(int id, String name) {
            super();
            this.id = id;
            this.name = name;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "Person [id=" + id + ", name=" + name + "]";
        }
    
    }

    13.集合的遍历值迭代器

    在Collection接口中有一个方法

    Public Iterator iterator();

    就可以得到一个对Collection进行遍历的迭代器。

    通过iterator方法得到的是一个java.util.Iterator接口类型的对象。

    Iterator中的方法:

    1. hasNext

    public boolean hasNext()

    作用:只是判断集合中是否有下一个元素进行迭代。

    1. next

    public Object next();

           作用:得到下一个元素。

    1. remove

    在对集合通过迭代器进行遍历时,我们一般会使用循环进行操作。

    ublic class CollectionDemo8 {
    5.    
    6.        public static void main(String[] args) {
    7.            // 1.向集合中装入三个学
    8.            // 1.1 创建集合
    9.            Collection c = new ArrayList();
    10.            // 1.2 向集合中装入学生对象
    11.            c.add(new Student(1, "tom", "男"));
    12.    
    13.            c.add(new Student(2, "fox", "女"));
    14.    
    15.            c.add(new Student(3, "james", "女"));
    16.            // 2.使用迭代器对集合进行遍历
    17.            // // 2.1.得到迭代器
    18.            // Iterator it = c.iterator();
    19.            //
    20.            // while (it.hasNext()) {
    21.            // // 2.2.判断是否有元素进行迭代
    22.            // // 2.3.将集合中元素迭代出来
    23.            // Student obj = (Student) it.next();
    24.            //
    25.            // // 2.4.输出
    26.            // System.out.println(obj);
    27.            // }
    28.    
    29.            // 将第二个步骤不在使用while循环来遍历,而使用for
    30.    
    31.            for (Iterator it = c.iterator(); it.hasNext();) {
    32.                Student obj = (Student) it.next();
    33.                System.out.println(obj);
    34.            }
    35.        }
    36.    }
    37.    
    38.    class Student {
    39.        private int id;
    40.        private String name;
    41.        private String sex;
    42.    
    43.        public Student(int id, String name, String sex) {
    44.            super();
    45.            this.id = id;
    46.            this.name = name;
    47.            this.sex = sex;
    48.        }
    49.    
    50.        public int getId() {
    51.            return id;
    52.        }
    53.    
    54.        public void setId(int id) {
    55.            this.id = id;
    56.        }
    57.    
    58.        public String getName() {
    59.            return name;
    60.        }
    61.    
    62.        public void setName(String name) {
    63.            this.name = name;
    64.        }
    65.    
    66.        public String getSex() {
    67.            return sex;
    68.        }
    69.    
    70.        public void setSex(String sex) {
    71.            this.sex = sex;
    72.        }
    73.    
    74.        @Override
    75.        public String toString() {
    76.            return "Student [id=" + id + ", name=" + name + ", sex=" + sex + "]";
    77.        }
    78.    
    79.    }

    14.迭代器的原理及源码解析

    通过分析发现以下情况:

    1. 每一个集合的迭代器不一样
    2. 迭代器的实现类都是内部类。

    问题:为什么每一个具体集合的迭代器不一样,还是内部类哪?

           转为每一个集合它的底层实现(数据结构)不一样,所以在遍历的方式上也不同。

           那么,每一个集合有一个自己的迭代器类的实现

           做成内部类的原因,内部类可以方便的去访问外部类的成员,

           这样在遍历集合中元素时更加方便 。

    伪代码

    Interface Collection{

           Iterator iterator();

    }

    Interface Iterator{

           Boolean hasNext();

           Object next();

    }

    Class MyArrayList implements Collection{

           //采用自己的数据结构存储数据

           Object[] objs;

           Class myItr implements Iterator{

           Boolean hasNext(){}

           Object next(){}

    }

    }

    Class MyHasSet implements Collection{

           //采用自己的数据结构存储数据

    Class myItrator implements Iterator{

           Boolean hasNext(){}

           Object next(){}

    }

    }

    16.List存储字符串并遍历

    List集合—有顺序可重复.

    因为List集合是Collection集合的子接口,

    List集合中包含了Collection中所有方法。

    但是List集合中也有一些特殊的方法(是List集合特有)

    17.List集合的特点

     1.add public void add(int index,Object obj);

     *         将obj元素插入到index索引位置,后面的元素顺延。 2.get public Object get(int index);

     *         获取指定index索引位置上的元素。 3.indexOf public int indexOf(Object obj)

     *         获取obj在集合中第一次出现的索引值,如果没有返回-1. 4.lastIndexOf public int

     *         lastIndexOf(Object obj) 获取obj在集合中第一次出现的索引值(从后向前查找),如果没有返回-1. 5.remove

     *         public Object remove(int index); 将index索引位置上的元素移除,返回值就是移除的元素。 6.set

     *         public Object set(int index,Object obj)

     *         将index索引位置的元素使用obj替换,返回值是被替换掉的元素。 7.subList public List subList(int

     *         fromIndex,int toIndex); 得到从formIndex到toIndex的一个子集。只包含开始,不包含结束

    19.List存储学生对象并遍历

    public class ListDemo2 {
    
        public static void main(String[] args) {
            // add();
            // get();
            // indexOf();
            // remove();
            // set();
            subList();
        }
    
        // subList
        public static void subList() {
            List list = new ArrayList();
            list.add("a");
            list.add("b");
            list.add("c");
            list.add("d");
            list.add("e");
    
            List sub = list.subList(1, 3);
            System.out.println(sub);
            
            System.out.println(list);
        }
    
        // set
        public static void set() {
            List list = new ArrayList();
            list.add("a");
            list.add("b");
            list.add("c");
            System.out.println(list);// [a,b,c]
            Object obj = list.set(1, "ok");
            System.out.println(list); // [a,ok,c]
            System.out.println(obj); // b
        }
    
        // remove
        public static void remove() {
            List list = new ArrayList();
            list.add("a");
            list.add("b");
            list.add("c");
            Object obj = list.remove(2);
            System.out.println(list);
            System.out.println(obj);
        }
    
        // add
        public static void add() {
    
            List list = new ArrayList();
            list.add(1);
            list.add(2);
            list.add(3);
            System.out.println(list);
    
            list.add(1, "ok");
            System.out.println(list);
        }
    
        // get
        public static void get() {
    
            List list = new ArrayList();
            list.add(10);
            list.add(20);
            list.add(30);
    
            Object obj = list.get(1);
            System.out.println(obj);
        }
    
        // indexOf
        public static void indexOf() {
    
            List list = new ArrayList();
            list.add("a");
            list.add("b");
            list.add("c");
            int index = list.indexOf("bbb");
            System.out.println(index);
        }
    
    }

    20.ListIterator的特有功能

    1. ListIterator可以做双向遍历  Iterator只能做从上到下遍历
    2. ListIterator可以在遍历过程中执行 add set remove

          Iterator只能做remove

    public class ListDemo4 {
    
        public static void main(String[] args) {
    
            // 1.创建一个List集合
            List list = new ArrayList();
    
            // 2.向集合中添加元素
            for (int i = 0; i < 10; i++) {
                list.add(i);
            }
            // 3.使用ListIterator进行遍历
            // 3.1 hasNext next 从上到下
            // ListIterator lit = list.listIterator();
            // for (; lit.hasNext();) {
            // System.out.println(lit.next());
            // }
            // System.out.println("------------------------------------------");
            //
            // // 3.2 hasPrevious previous 从下向上遍历
            // for (; lit.hasPrevious();) {
            // System.out.println(lit.previous());
            // }
            ListIterator lit = list.listIterator(3);
    
            // System.out.println(lit.previous());
    
            // System.out.println(lit.next());
    
        }
    }

     

  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/liman/p/4430688.html
Copyright © 2011-2022 走看看