首页 > 编程语言 >Java第十三课_常用时间类和集合

Java第十三课_常用时间类和集合

时间:2023-12-22 23:35:52浏览次数:44  
标签:Java 第十三 System collection println 集合 Calendar c1 out

1.常用时间类

  • Calendar类

        public static void main(String[] args) {
            // JDK1.1开始
            // Calendar类是一个抽象类,
            // 它提供了在特定时刻和一组日历字段(如YEAR、MONTH、DAY_of_MONTH、HOUR等)之间进行转换的方法,以及操作日历字段(例如获取下一周的日期)的方法。时间的瞬间可以用毫秒值表示,毫秒值是从1970年1月1日00:00:00.000 GMT(格里高利)开始的偏移量。
            Calendar c1 = new GregorianCalendar();
            System.out.println("c1 = " + c1);
            Calendar c2 = Calendar.getInstance();
            System.out.println("c2 = " + c2);
    
            // 获取   int	get​(int field)
            int year = c1.get(Calendar.YEAR);
            System.out.println("year = " + year);
            int month = c1.get(Calendar.MONTH);
            System.out.println("month = " + month);
            // 查表法
            String[] months = {"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"};
            System.out.println(months[c1.get(Calendar.MONTH)]);
            int day = c1.get(Calendar.DATE);
            System.out.println("day = " + day);
    
            int week = c1.get(Calendar.DAY_OF_WEEK);
            System.out.println("week = " + week);
            String[] weeks = {"", "日", "一", "二", "三", "四", "五", "六"};
            System.out.println(weeks[c1.get(Calendar.DAY_OF_WEEK)]);
    
            // 设置 :
            // void	set​(int field, int value)
            c1.set(Calendar.YEAR, 2024);
            year = c1.get(Calendar.YEAR);
            System.out.println("year = " + year);
    
            c1.set(Calendar.MONTH, 7);// 偏移量
            System.out.println(months[c1.get(Calendar.MONTH)]);
    
            // void	set​(int year, int month, int date)
            c1.set(2008, Calendar.AUGUST, 8);
            System.out.println(months[c1.get(Calendar.MONTH)]);
    
            // void	set​(int year, int month, int date, int hourOfDay, int minute)
            // void	set​(int year, int month, int date, int hourOfDay, int minute, int second)
            c2.set(2008, Calendar.AUGUST, 8);
            System.out.println(c1.equals(c2));
    
            // void	clear()	清除所有字段
            c1.clear();
            c2.clear();
            System.out.println("c1 = " + c1);
            c1.set(2008, Calendar.AUGUST, 8);
            c2.set(2008, Calendar.AUGUST, 8);
            System.out.println(c1.equals(c2));
    
            // void	clear​(int field) 清除指定字段
            System.out.println("c1 = " + c1);
            c1.clear(Calendar.YEAR);
            System.out.println("c1 = " + c1);
    
            // void	add​(int field, int amount) : 在现有时间的基础上向前向后延伸时间
            c2.add(Calendar.YEAR, -1000);
            System.out.println(c2.get(Calendar.YEAR));
    
            // boolean	after​(Object when)
            // boolean	before​(Object when)
            // 计算二月份有几天  2024年
            Calendar calendar = new GregorianCalendar();
            calendar.set(2023, Calendar.MARCH, 1);
            calendar.add(Calendar.DATE, -1);
            System.out.println(calendar.get(Calendar.DATE));
    
            // Date ---> Calendar
            c1.setTime(new Date());
    
            // Calendar --->  Date
            Date time = c1.getTime();
        }
    
  • java.time

        public static void main(String[] args) {
            /*
                1. JDK1.0 java.util.Date
                    缺陷 : 偏移量
                2. JDK1.1 java.util.Calendar 线程不安全
                    缺陷 :
                        a.偏移量
                        b.可变性,线程不安全的
                        c.格式化 : java.text.DateFormat 只适用于 Date , 不能用于 Calendar
                3. JDK8.0  java.time : 时间包
             */
            // LocalDate : 只有年月日
            // LocalTime : 只有时分秒毫秒
            // LocalDateTime : 年月日时分秒毫秒
            // now()
            LocalDate localDate = LocalDate.now();
            System.out.println("localDate = " + localDate);
            LocalTime localTime = LocalTime.now();
            System.out.println("localTime = " + localTime);
            LocalDateTime localDateTime = LocalDateTime.now();
            System.out.println("localDateTime = " + localDateTime);
    
            // of() 设置
            LocalDateTime localDateTime1 = LocalDateTime.of(2008, 8, 8, 8, 8);
            System.out.println("localDateTime1 = " + localDateTime1);
            System.out.println("localDateTime = " + localDateTime);
            LocalDate localDate1 = LocalDate.of(2008, 8, 8);
            System.out.println("localDate1 = " + localDate1);
            // 获取 get
            int year = localDateTime1.getYear();
            System.out.println("year = " + year);
            System.out.println(localDateTime1.getMonth());
            System.out.println("localDateTime1.getDayOfMonth() = " + localDateTime1.getDayOfMonth());
            System.out.println(localDateTime1.getMinute());
    
            // 设置  with
            System.out.println(LocalDateTime.now().withYear(2030).getYear());
            System.out.println(LocalDateTime.now().withMonth(9).getMonth());
        }
    
  • 时间的格式化

        public static void main(String[] args) {
            // 格式化 : DateTimeFormatter
            // DateTimeFormatter
            // 1.预定义标准 :
            // ISO_DATE_TIME : 2023-12-19T10:18:46.27
            // ISO_DATE : 2023-12-19
            // ISO_TIME : 10:19:49.405
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_TIME;
            // LocalDateTime ---> String
            String format = dateTimeFormatter.format(LocalDateTime.now());
            System.out.println("format = " + format);
    
            // String ---> LocalDateTime
            TemporalAccessor parse = dateTimeFormatter.parse("10:19:49.405");
            System.out.println("parse = " + parse);
    
            LocalTime parse1 = LocalTime.parse("10:19:49.405", dateTimeFormatter);
            System.out.println("parse1 = " + parse1);
    
            LocalDateTime localDateTime = LocalDateTime.parse("2023-12-19T10:18:46.27");
            System.out.println("localDateTime = " + localDateTime);
            localDateTime = LocalDateTime.parse("2023-12-19T10:18:46.27", DateTimeFormatter.ISO_DATE_TIME);
            System.out.println("localDateTime = " + localDateTime);
    
            // 2.本地相关 : FormatStyle
            // LONG :2023年12月19日 上午10时22分59秒
            // MEDIUM : 2023-12-19 10:23:17
            // SHORT : 23-12-19 上午10:23
            DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
            String format1 = dateTimeFormatter1.format(LocalDateTime.now());
            System.out.println("format1 = " + format1);
    
            TemporalAccessor parse3 = dateTimeFormatter1.parse("23-12-19 上午10:23");
            System.out.println("parse3 = " + parse3);
    
            LocalDateTime parse2 = LocalDateTime.parse("23-12-19 上午10:28", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT));
            System.out.println("parse2 = " + parse2);
            // 3.自定义 : 常用
            DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy/MM/dd kk:mm:ss SSS");
            String format2 = dateTimeFormatter2.format(LocalDateTime.now());
            System.out.println("format2 = " + format2);
    
            Instant now = Instant.now();
            System.out.println("now = " + now);
    
            Clock clock = Clock.systemDefaultZone();
            System.out.println("clock = " + clock);
    
            ZoneId zone = clock.getZone();
            System.out.println("zone = " + zone);
        }
    

2.集合

  • 集合Collection

        public static void main(String[] args) {
            /*
                算法 :解题的流程
                    1.可以解决具体的问题
                        1 + 2 +3 +4 + ... + 100
    
                    2.设计解决问题的流程
                        a.
                            1+2 = 3
                            3 +3 =6
                            6+4=10
    
                        b.
                            1+100
                            2+99
                            3+98
                            4+97
                            ...
                    3.评价指标
                        时间复杂度
                        空间复杂度
    
                数据结构 :
                    1.逻辑结构 :
                        认知结构、思想上的结构
                        厨房 , 客厅 ...
                        线性表 , 图 , 栈 ,队列
                    2.物理结构 :
                        真实结构
                        钢筋水泥 + 力学
                        紧密结构(顺序结构)
                        跳转结构 (链式结构)
    
                    线性表 :相同类型数据的有序序列  a1 a2  a3 ... an  an+1
                        1.相同的数据类型
                        2.序列、顺序性
                        3.有限
    
                紧密结构 :
                    优点 : 查询块
                    缺点 : 增删慢
    
                链式结构、跳转结构 : 1.单项链表  2. 双向链表  3.环式链表
                    优点 :增删快
                    缺点 :查询效率低
             */
    
            /*
                数组 :
                    1.增删元素麻烦 : 需要字节编写函数
                    2.长度是固定的 :
                    3.结构单一
    
                集合 :内存存储
                    1.有增删改查的功能
                    2.长度会自增
                    3.数据结构较多 , 可以满足多种需求
    
                数据库 : 持久存储
             */
            // Collection 表示一组对象,这些对象也称为 collection 的元素。
            //  | List :
            //      | ArrayList :
            //      | Vector :
            //      | LinkedList :
            //  | Set :
            //      | HashSet :
            //      | TreeSet :
            // 注意 : 集合中的 contains 函数  , remove 函数 以及 indexOf , lastIndexOf 函数会根据集合中的元素的equals函数进行判断
    
            Collection<Object> collection = new ArrayList<>();
            // 增
            // boolean add(E e)
            //           确保此 collection 包含指定的元素(可选操作)。
            collection.add(123);// Integer
            collection.add("aaa");
            collection.add(3.14);// Double
            collection.add(true);// Boolean
            collection.add('Y');// Character
            Object o = new Object();
            collection.add(o);
            System.out.println(collection);//等同于.toString()
    
            // 删
            //  boolean remove(Object o)
            //           从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
            collection.remove(true);
            collection.remove("aaa");
            collection.remove(o);
            System.out.println("collection = " + collection);
            // void clear()
            //           移除此 collection 中的所有元素(可选操作)。
            collection.clear();
            System.out.println("collection = " + collection);
    
            // 查
            //  int size()
            //           返回此 collection 中的元素数。
            collection.clear();
            System.out.println("collection.size() = " + collection.size());
    
            // 判断
            //  boolean contains(Object o)
            //           如果此 collection 包含指定的元素,则返回 true。
            System.out.println("collection.contains(123) = " + collection.contains(123));
            //  boolean isEmpty()
            //           如果此 collection 不包含元素,则返回 true。
            System.out.println("collection.isEmpty() = " + collection.isEmpty());
    
            // 集合  ---> 数组
            //  Object[] toArray()
            //           返回包含此 collection 中所有元素的数组。
            //  <T> T[] toArray(T[] a)
            //           返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
        }
    
  • 迭代器Iterator

        public static void main(String[] args) {
            Collection collection = new ArrayList();
            collection.add(123);// Integer
            collection.add("aaa");
            collection.add(3.14);// Double
            collection.add(true);// Boolean
            collection.add('Y');// Character
    
            //  Iterator<E> iterator()
            //           返回在此 collection 的元素上进行迭代的迭代器。
    
            // 开发不会使用 while 循环
            Iterator iterator = collection.iterator();
    
            while (iterator.hasNext()) {// iterator.hasNext() 判断当前指针是否有数据. 判断后不会主动向后找, 需要配合.next()移动指针
                Object o = iterator.next();// 每调用一次 next() 函数就会得到一个新的元素,如果没有元素,就会 NoSuchElementException
                System.out.println("o = " + o);
            }
            System.out.println("----------------------------------------");
            // 开发常用方式一 : for 循环
            for (Iterator iterator1 = collection.iterator(); iterator1.hasNext(); ) {
                Object o = iterator1.next();
                System.out.println("o = " + o);
            }
    
            // 方式二 : 增强for循环
            for (Object object : collection) {
                System.out.println("object = " + object);
            }
    
            // 方式三 : JDK8.0开始 : Stream
            collection.forEach(System.out::println);
    
            // 方式四 : JDK8.0
            collection.stream().forEach(System.out::println);
    
            // 方式四 : JDK8.0
            collection.stream().forEach(new Consumer() {
                @Override
                public void accept(Object o) {
                    System.out.println("o = " + o);
                }
            });
        }
    
  • 泛型

        public static void main(String[] args) {
            // JDK5.0 泛型 : <数据类型>
            // 将集合的类型限定为某个类型, 编译时期有效
            // 优势:
            //      1.将运行时异常转换为编译时错误
            //      2.可以避免类型转换
            Collection<String> collection1 = new ArrayList<>();
            Collection<String> collection2 = new ArrayList<>();
    
            collection1.add("aaa");
            collection1.add("bbb");
            collection1.add("ccc");
            collection1.add("ddd");
            for (Iterator<String> iterator = collection1.iterator(); iterator.hasNext(); ) {
                // Object o = iterator.next();
                // String s = (String) o;
                String s = iterator.next();// 泛型后可以直接使用对应类, 来接收集合的数据, 无需强制类型转换
                System.out.println("s.length() = " + s.length());
            }
    
            collection2.add("ccc");
            collection2.add("ddd");
            collection2.add("eee");
            collection2.add("fff");
    
            //  boolean addAll(Collection<? extends E> c)  并集
            //           将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
            // collection1.addAll(collection2);
    
            //  boolean containsAll(Collection<?> c)
            //           如果此 collection 包含指定 collection 中的所有元素,则返回 true。
            System.out.println(collection1.containsAll(collection2));
            //  boolean removeAll(Collection<?> c) 差集
            //           移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
            // collection1.removeAll(collection2);
    
            System.out.println("collection1 = " + collection1);
            System.out.println("collection2 = " + collection2);
    
            //  boolean retainAll(Collection<?> c) 交集
            //           仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
            collection1.retainAll(collection2);
    
            System.out.println("collection1 = " + collection1);
            System.out.println("collection2 = " + collection2);
        }
    

标签:Java,第十三,System,collection,println,集合,Calendar,c1,out
From: https://www.cnblogs.com/shinya/p/17915154.html

相关文章

  • Java第十五课_映射,数组和集合的转换
    1.映射HashMappublicstaticvoidmain(String[]args){/*嵌套类/内置类/内部类/内部接口K:keyV:valueE:elementR:ReturnTypeT:typeMap<K,V>:存储的......
  • Java第十课_抽象和多态
    4.面向对象的编程_抽象和多态抽象publicclassPractice{publicstaticvoidmain(String[]args){Student.say();}}publicabstractclassStudent{/*abstract:表示抽象的,可以用来修饰类和函数抽象的本质,是从一......
  • Java之Stream流及方法引用的详细解析二
    2.6Stream流综合练习【应用】案例需求现在有两个ArrayList集合,分别存储6名男演员名称和6名女演员名称,要求完成如下的操作男演员只要名字为3个字的前三人女演员只要姓林的,并且不要第一个把过滤后的男演员姓名和女演员姓名合并到一起把上一步操作后的元素作为构造方法的参数创建演员......
  • Java技术体系
    Java技术体系从今天开始,自己也开始记录自己的博客...(虽然很多次有这个念头,但是一直难坚持下去,希望这次可以坚持的更久叭)之前自己一直在学习C++语言,学习了许多语法,也写过一些玩具项目,慢慢的感觉C++语言语法的繁琐,同时由于校招互联网对C++开发者的需求较少,也算是被迫学习一下Java,......
  • 2023-2024-1 20231309 《计算机基础与程序设计》第十三周学习总结
    2023-2024-120231309《计算机基础与程序设计》第十三周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十三周作业这个作业的目标自学教材《C语言程序设计》第12章并完成云班课测......
  • Java工具库——Commons IO的50个常用方法
      Java工具库——CommonsIO的50个常用方法转载自:https://juejin.cn/post/7294568614202966035工具库介绍CommonsIO(ApacheCommonsIO)是一个广泛用于Java开发的开源工具库,由Apache软件基金会维护和支持。这个库旨在简化文件和流操作,提供了各种实用工具类和方法,以......
  • java接口自动化测试实战003----fastjson处理传入参数为JSON格式数据
    一、fastjson概述1、概述   fastjson是阿里爸爸开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。2、常用API   fastjsonAPI入口类是com.alibaba.fastjson.JSON,常......
  • java接口自动化测试实战002----测试数据封装及ExcelUtil优化
    一、利用testNG测试框架进行封装1、封装实现新建测试类,类中新增多个方法,每个方法存储一条测试数据并调用HttpUtl类中的doGet或doPost方法。缺点:代码复杂、繁琐,且不适用测试数据量大的情况。2、封装步骤(1)maven的pom.xml文件中添加testNG测试框架的依赖,如下所示:<!--https://......
  • java接口自动化测试实战004----分表存储接口信息和用例信息之CaseUtil和RestUtil
    一、分表存储用例信息和接口信息1、实现思想  将用例相关信息存储在用例表单中,将接口信息存储在接口信息表单中,创建对应的类存储表单中的信息。2、实现步骤(1)修改表格文件,分表存储用例信息和接口信息,如下图所示:     (2)修改ExcelUtil中的读取函数datas,让表单名称......
  • 2023常见自动化测试工具集合
    1、Appium------->AppUI自动化测试官网:http://appium.ioAppium是一个移动端自动化测试开源工具,支持iOS和Android平台,支持Python、Java等语言,即同一套Java或Python脚本可以同时运行在iOS和Android平台,Appium是一个C/S架构,核心是一个Web服务器,它提供了一套REST的......