时间和集合

DateTimeFormatter

方法名

1  public static DateTimeFormatter ofPattern(时间格式)  获得格式化对象

eg:DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss)
 

public String format(时间对象)  格式化时间

正向格式化eg :         LocalDateTime now = LocalDateTime.now();
                                System.out.println(now);
                                String rs = formatter.format(now);
                                System.out.println(rs);

反向格式化eg:        String rs2 = now.format(formatter);
                               System.out.println(rs2);

Duraion计算两个时间的间隔

1、得到Duration对象
public static void main(string[] args){
LocalDateTime start = LocalDateTime.of( year: 2025, month: 11, dayOfMonth: 11, hour: 11, minute: 10, second: 10);

LocalDateTime end = LocalDateTime.of( year: 2025, month: 11, dayOfMonth: 11, hour: 11, minute: 11, second: 11);
Duration duration = Duration.between(start, end);
2、获取两个时间对象间隔的信息
system.out.println(duration.toDays());//间隔多少天

System.out.println(duration.toHours());// 间隔多少小时

system.out.println(duration.toMinutes());//间隔多少分

System.out.println(duration.toSeconds());// 间隔多少秒

system.out.println(duration.toMillis());//间隔多少毫秒

System.out.println(duration.toNanos());//间隔多少纳秒

1、 public static String toString(类型[] arr):返回数组的内容
intll arr = {10, 20, 30, 40, 50, 60};
system.out.println(Arrays.tostring(arr));
 2、 public static 类型[] copyOfRange(类型[]arr,起始索引,结束索引):拷贝数组(指定范围,包前不包后)
int[] arr2 = Arrays.copy0fRange(arr, from: 1, to: 4);
System.out.println(Arrays.tostring(arr2));
3、public static copy0f(类型[] arr, int newLength):拷贝数组,可以指定新数组的长度。
int[] arr3 = Arrays.copyof(arr,
hewLength:10);System.out.println(Arrays.tostring(arr3));
 4、public static setAll(double[] array, IntToDoubleFunction generator):把数组中的原数据改为新数据又存进去。
doublel[] prices = {99.8, 128, 100};
//把所有的价格都打八折,然后又存进去

Arrays.setAll(prices, new IntToDoubleFunction() {
@Override
public double applyAsDouble(int value)
return prices[value]*0.8;

}

/5、public static void sort(类型[] arr):对数组进行排序(默认是升序排序)

Arrays.sort(prices);
System.out.println(Arrays.tostring(prices));

Lambda表达式
Lambda表达式是JDK8开始新增的一种语法形式;作用:用于简化匿名内部类的代码写法。
格式:
(被重写方法的形参列表)->{
被重写方法的方法体代码}
注意:Lambda表达式只能简化函数式接口的匿名内部类!!!
函数式接口:
有且仅有一个抽象方法的接口。
注意:将来我们见到的大部分函数式接口,上面都可能会有一个@Functionallnterface的注解,有该注解的接口就必定是函数式接口。
Lambda表达式的省略写法(进一步简化Lambda表达式的写法)
参数类型可以省略不写.
如果只有一个参数,参数类型可以省略,同时(也可以省略。
3  如果Lambda表达式中的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号!此时,如果这行代码是return语句,也必须去掉return不写。

正则表达式 

 

 使用正则表达式查找一段文本的内容

String data =“来黑马程序员学习Java,\n”+
电话:1866668888,18699997777\n”+
或者联系邮箱:boniu@itcast.cn,\n”.座机电话:01036517895,010-98951256\n”+
邮箱:bozai@itcast.cn,\n”+
邮箱2:dlei0009@163.com,\n”+
热线电话:400-618-9090 ,400-618-4000,4006184000,4006189090";
// 1.定义爬取规则(正则表达式)
string regex="(\\w{1,}@\\w{2,10}(\\.1\w{2,10}){1,2})|"+
“(1[3-9]\\d{9})|(0\\d{2,5}-?\\d{5,15})|400-?\\d{3,8}-?\\d{3,8]";
// 2.把正则表达式封装成一个Pattern对象
Pattern pattern = Pattern.compile(regex);
// 3.通过pattern对象得到查找内容的匹配器
Matcher matcher = pattern.matcher(data);
//4.通过匹配器开始去内容中查找信息
while(matcher.find()){
//5.取出信息
System.out.println(matcher.group());

正则表达式用于搜索替换、分割内容,需要结合String提供的如下方法完成:
方法名                                                                                                   说明
public String replaceAll(String regex ,String newStr)   按照正则表达式匹配的内容进行替换
public String[] split(String regex):                                 按照正则表达式匹配的内容进行分割字符                                                                                           串,反回一个字符串数组。   
示例

//需求1:请把 古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴,中的人名获取出来。
String s1=“古力娜扎ai8888迪丽热巴999aa5566马尔扎哈fbbfsfs42425卡尔扎巴";
String[] names = s3.split( regex: "\\w+");
system.out.println(Arrays.toString(names));

       
 需求2(拓展):某语音系统,收到一个口吃的人说的“我我我喜欢编编编编编编编编编编编编程程程!”,需要优化成“我喜欢编程!“。
String s2 ="我我我喜欢编编编编编编编编编编编编程程程";
/**
*(.)一组:.匹配任意字符的。

*\\1:为这个组声明一个组号:1号

*+:声明必须是重复的字
*$1可以去取到第1组代表的那个重复的字

*/
System.out.println(s2.replaceAll( regex:"(.)\\1+", replacement:"$1"));
// 2、 public String[] split(String regex):按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。
 

 自定义异常
Java无法为这个世界上全部的问题都提供异常类来代表,如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类了
自定义异常的种类

自定义运行时异常                                                            自定义编译时异常
 •定义一个异常类继承RuntimeException.                      •定义一个异常类继承Exception.
 •重写构造器。                                                                 重写构造器。
 •通过throw new 异常类(xxx)来创建异常对象并抛出。 •通过throw new 异常类(xxx)来创建异常对       象                                                                                 并抛出
 编译阶段不报错,提醒不强烈,运行时才可能出现!!编译阶段就报错,提醒更加强烈!

示例

public class ExceptionTest3{
public static void main(String[] args)
try {
    test1();
}
 catch (FileNotFoundException e){
System.out.println("您要找的文件不存在!!");
e.printstackTrace();//打印出这个异常对象的信息。记录下来。
}catch (ParseException e) {
System.out.println("您要解析的时间有问题了!");
e.printStackTrace();//打印出这个异常对象的信息。记录下来。
    }
}

public static void test1() throws FileNotFoundException, ParseException {
SimpleDateFormat sdf = new SimpleDateFormat( pattern: "yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse( source: "2028-11-11 10:24: F);
system.out.println(d);
test2();
}
);
public static void test2() throws FileNotFoundException {
/ 读取文件的
InputStream is = new FileInputStream( name:"D:/meinv.png");
    }
}

                                         Collection集合体系

  List的方法

public static void main(String[] args) {
// 1.创建一个ArrayList集合对象(有序、可重复、有索引)
List<String> lisk = new ArrayListc>();
list.add("蜘蛛精");
list.add("至尊宝");
list.add("至尊宝");
list.add(“牛夫人“);
System.out.println(list);
//[蜘蛛精,至尊宝,至尊宝,牛夫人]
// 2.public void add(int index, E element):在某个索引位置插入元素。
list.add( index: 2, element:"紫霞仙子");
System.out.println(list);
// 3.public E remove(int index):根据索引删除元素,返回被删除元素
System.out.println(list.remove( index:2));
System.out.println(list);
// 4.public E get(int index):返回集合中指定位置的元素。
System.out.println(list.get(3));
// 5.public E set(int index, E element):修改索引位置处的元素,修改成功后,会返回原来的数据
System.out.println(list.set(3,"牛魔王"));
System.out.println(list);

LinkedList的方法

public static void main(String[] args) {
// 1、创建一个队列。
LinkedList<String> queue = new LinkedList<>();
queue.addLast( e:"第1号人");
queue.addLast( e:"第2号人");
queue.addLast( e:"第3号人");
queue.addLast( e:"第4号人");
System.out.println(queue);// 出队
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue.removeFirst());
System.out.println(queue);

//2、创建一个栈对象。
LinkedList<String> stack = new LinkedList<>();
// 压栈
stack.addFirst( e:"第1颗子弹");
stack.addFirst( e:"第2颗子弹");
stack.addFirst( e:"第3颗子弹");
stack.addFirst( e:“第4颜子弹");

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值