JavaSE进阶(9~12)

JavaSE进阶(9~12)

9-API&集合

一、时间日期类&Collection

日期类
1,北京时间需要在世界标准时间上加8小时。
2,1秒=1000毫秒
3,计算机中的时间原点为:1970年1月1日 00:00:00

1、Date 类概述和构造方法

Date 代表了一个特定的时间,精确到毫秒
2020年1月1日 0:0:0
2030年1月1日 11:11:11 在这里插入图片描述
Date date1 = new Date();    把当前时间封装成一个Date对象;
Date date2 = new Date(0L);  把从时间原点开始,过了指定毫秒的时间,封装成一个Date对象,需要考虑时差问题。
示例代码:

package com.itheima.mydate;

import java.util.Date; /*导包 */
public class DateDemo1 {
   
    public static void main(String[] args) {
   
        // 那么这个时间就表示电脑中的当前时间。
        Date date1 = new Date(); // 打印的是毫秒是!
        System.out.println(date1);

        // 从计算机的时间原点开始,过了指定毫秒的那个时间。
        Date date2 = new Date(0L);
        System.out.println(date2);// Thu Jan 01 08:00:00 CST 1970
        // 从时间原点开始,过了0毫秒。
        // 因为我们是在中国,我们是在东八区加了8小时。

        // 1970年1月1日 上午的9点
        Date date3 = new Date(3600L * 1000);
        System.out.println(date3);
    }
}

2、Date 类的常用方法(成员方法)

  • 常用方法

    方法名 说明
    public long getTime() 获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
    public void setTime(long time) 设置时间,给的是毫秒值

代码示例:

package com.itheima.mydate;

import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo2 {
   
    public static void main(String[] args) {
   
        // public long getTime() 获取时间对象的毫秒值
        // public void setTime(long time) 设置时间,传递毫秒值
        // method1();
        // method2();
    }
    private static void method2() {
   
        Date date1 = new Date();
        date1.setTime(0L);
        System.out.println(date1);
    }
    private static void method1() {
   
        // 把当前时间封装成一个date对象
        Date date1 = new Date();
        // 获取这个date对象的毫秒值 --- 获取当前时间的毫秒值
        long time = date1.getTime();
        System.out.println(time);

        long time2 = System.currentTimeMillis(); //获取当前时间的毫秒值
        System.out.println(time2);
    }
}

3、SimpleDateFormat 类概述

SimpleDateFormat 可以对Date对象,进行格式化解析
在这里插入图片描述
在这里插入图片描述

SimpleDateFormat 的构造方法

在这里插入图片描述

SimpleDateFormat 格式化和解析(成员方法)

1. 格式化(从 Date 到 String )
public final String format(Date date):将日期格式化成日期/时间字符串

2. 解析(从 String 到 Date )
public Date parse​(String source):从给定字符串的开始解析文本以生成日期

格式化代码:

package com.itheima.mydate;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo3 {
   
    public static void main(String[] args) {
   
        // 当前时间的Date对象
        Date date = new Date();
        // 创建了一个日期格式。
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        String result1 = sdf.format(date);
        System.out.println(result1);// 输出的是格式化之后的时间格式;
    }
}

解析代码:

package com.itheima.mydate;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo4 {
   
    public static void main(String[] args) throws ParseException {
   
        String s = "2048-01-01";
        // SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");//格式不一致,解析错误;
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(s);
        System.out.println(date);
    }
}

SimpleDateFormat 小结
1. 格式化(从 Date 到 String )
public final String format(Date date): 把时间按照固定格式进行展示;
2. 解析(从 String 到 Date )
public Date parse​(String source):需要对时间进行计算时使用;

案例:
小贾下单并付款的时间为:2020年11月11日 0:03:47
用代码说明这位同学有没有参加上秒杀活动?
步骤:
1,判断下单时间是否在开始到结束的范围内
2,把字符串形式的时间变成毫秒值
代码演示:

package com.itheima.mydate;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo5 {
   
    public static void main(String[] args) throws ParseException {
   
        // 开始时间:2020年11月11日 0:0:0
        // 结束时间:2020年11月11日 0:10:0
        // 小贾2020年11月11日 0:03:47

        String start = "2020年11月11日 0:0:0";
        String end = "2020年11月11日 0:10:0";
        String jia = "2020年11月11日 0:03:47";

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        long startTime = sdf.parse(start).getTime();
        long endTime = sdf.parse(end).getTime();
        long jiaTime = sdf.parse(jia).getTime();

        if (jiaTime >= startTime && jiaTime <= endTime) {
   
            System.out.println("小贾同学参加上了秒杀活动");
        } else {
   
            System.out.println("小贾同学没有参加上秒杀活动");
        }
    }
}

4、集合的概述

  数组的长度是不可变的,集合的长度是可变的。
  数组可以存储基本数据类型也可以存储引用数据类型

int [] arr1 = {
   1,2,3};   //基本数据类型;
String [] arr2 = {
   "a","b","c"};   //引用数据类型;

  集合不能存储基本数据类型,如果集合要存储基本数据类型,那么实际存储的是他们的包装类;

ArrayList<int> list2 = new ArrayList<int>();   //报错
ArrayList<Integer> list2 = new ArrayList<>();
 list2.add(1);
集合类体系结构

在这里插入图片描述

5、Collection集合

Collection集合概述

  • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
  • JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

创建Collection集合的对象

  • 多态的方式
  • 具体的实现类ArrayList

Collection 集合常用方法
在这里插入图片描述
代码实现:

package com.itheima.mycollectiondemo1;

public class MyCollectonDemo2 {
   
    public static void main(String[] args) {
   
        //创建对象;
        Collection<String> collection = new ArrayList<>();   
        // boolean add(E e) 添加元素
        collection.add("aaa");
        // method1(collection);
    }
     // 集合中元素的个数
    private static void method6(Collection<String> collection) {
    
        int size = collection.size();
        System.out.println(size);
    }
     // 判断集合是否为空
    private static void method5(Collection<String> collection) {
    
        collection.clear();
        boolean result = collection.isEmpty();
        System.out.println(result);
    }
     // 判断集合中是否存在指定的元素
    private static void method4(Collection<String> collection) {
    
        boolean result = collection.contains("a");
        System.out.println(result);

        boolean result2 = collection.contains("aaa");
        System.out.println(result2);
    }
    // 清空集合方法
    private static void method3(Collection<String> collection) {
    
        // 就是将集合中所有的元素全部删除.
        collection.clear();
        System.out.println(collection);
    }
    //根据条件进行删除
    private static void method2(Collection<String> collection) {
   
        // boolean removeif(Object o) 根据条件进行删除
        // removeif底层会遍历集合,得到集合中的每一个元素
        // s依次表示集合中的每一个元素
        // 就会把这每一个元素都到lambda表达式中去判断一下
        // 如果返回的是true,则删除
        // 如果返回的是false,则保留不删除.
        
        // boolean test(String t);
        collection.removeIf( // 删除长度为3的;
                (String s) -> {
    // s是形参;
                    return s.length() == 3;
                }
        );
        System.out.println(collection);
    }
    //删除元素
    private static void method1(Collection<String> collection) {
    // 传参;
        // boolean remove(Object o) 从集合中移除指定的元素
        // 删除成功,则返回true;删除失败,返回false
        boolean result1 = collection.remove("aaa"); // 返回true
        boolean result2 = collection.remove("ddd"); // 返回false
        System.out.println(result1);
    }
}

6、Collection 集合的遍历(迭代器)

Iterator:迭代器,集合的专用遍历方式
Iterator<E> iterator()返回集合中的迭代器对象,该迭代器对象默认指向当前集合的0索引

Iterator中的常用方法
boolean hasNext()判断当前位置是否有元素可以被取出;
E next()获取当前位置的元素;
     将迭代器对象移向下一个索引位置;

package com.itheima.mycollectiondemo1;

public class MyCollectonDemo3 {
   
    public static void main(String[] args) {
   
        Collection<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        // 1,获得迭代器的对象
        // 迭代器对象一旦被创建出来,默认指向集合的0索引处
        //Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
        Iterator<String> it = list.iterator();

        // 利用迭代器里面的方法进行遍历
        // 当前位置是否有元素可以被取出
        // //取出当前位置的元素 + 将迭代器往后移动一个索引的位置
        while (it.hasNext()) {
    // 使用循环将集合中的内容全部取出;
            System.out.println(it.next());
        }
    }
}

迭代器小结

Iterator<E> iterator():创建迭代器对象,默认指向当前集合的0索引。
boolean hasNext():判断当前位置是否有元素可以被取出
E next():获取当前位置的元素
     将迭代器对象移向下一个索引位置

7、迭代器中删除的方法

练习:创建一个集合,有元素 a b b c d
循环遍历这个集合,判断当前获取到的元素是否为b,如果是就删除(删除b元素)
代码示例:

package com.itheima.mycollectiondemo1;

public class MyCollectonDemo4 {
   
    public static void main(String[] args) {
   
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");

//普通方法,循环遍历集合,删除所有b元素
        for (int i = 0; i < list.size(); i++) {
   
            String s = list.get(i);
            if ("b".equals(s)) {
   
                list.remove(i);
                i--;
            }
        }
        System.out.println(list);

//迭代器方法
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
   
            String s = it.next();
            if(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值