• 第十五天笔记


    黑马程序员  <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());
    
        }
    }

     

  • 相关阅读:
    PostgreSQL管理工具:pgAdminIII
    PostgresQL7.5(开发版)安装与配置(win2003测试通过)
    让PosggreSQL运行得更好
    在.NET程序中使用PIPE(管道技术)
    在浏览网页过程中,单击超级链接无任何反应
    字符串转换
    数组初始化
    使用现有的COM
    后台服务程序开发模式(一)
    COM的四本好书
  • 原文地址:https://www.cnblogs.com/liman/p/4430688.html
Copyright © 2020-2023  润新知