//获取当前系统时间所表示的日期对象
LocalDate date = LocalDate.now();
//获取月份值(年周日同理)
Date.getMonthValue();
//根据指定的日期构建一个LocalDate对象
LocalDate date2 = LocalDate.of(2020,7,8);
//获取当前系统时间所表示的日期对象
LocalTime time = LocalTime.now();
//获取时(分秒)
time.getHour();
//根据指定的日期构建一个LocalTime对象
LocalTime time = LocalDate.of(12,11,18);
//获取当前系统时间所表示的日期对象
LocalDateTime time = LocalDateTime.now();
//根据指定的日期构建一个LocalDateTime对象
LocalDateTime time = LocalDateTime.of(2020,8,9,19,22,12);
//将LocalDateTime转换为LocalDate跟LocalTime
LocalDate localDate = time.toLocalDate();
LocalTime localTime = time.toLocalTime();
//创建一个格式化解析对象
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");
//获取系统时间
LocalDateTime datetime = LocalDateTime.now();
//将datetime格式转成2020年07月……的形式
String time = fmt.format(datetime);
time = datetime.format(fmt);
//将2020年07月……的String类型转成DateTime
String t = "2020年07月08日 09时33分21秒";
dateTime = LocalDateTime.parse(t, fmt);
注意事项:
与DateFormat和SimpleDateFormat的区别在于,DateTimeFormatter是线程安全的实现,在多线程并发的时候可以让多个线程使用同一当前实例,能保证数据的一致性;但是DateFormat是线程非安全实现,因此在多线程并发时,需要为每个线程单独创建该实例。
//Pattern & Matcher 用法:
String s = "234798273489176123123123";
Pattern p = Pattern.compile("1\\d{10}");
Matcher m = p.matcher(s);
//如果成功查找 m.find() 返回值为true
while(m.find()){
System.out.println(m.group());
}
在类声明时在后面通过<>符号指定类型参数,然后在类中可以使用这些类型参数设置动态类型
public class MyCalc<I,D,F> {
public I add(I i1,I i2) {
return null;
}
...
}
public interface BaseManager<T> {
boolean add(T obj);
boolean delete(T obj);
boolean update(T obj);
T findById(int id);
ArrayList<T> findAll();
}
//接口后接,在实现类中要加具体类
public class EmpManager implements BaseManager<Emp>{
...
}
是java集合框架中的顶层接口,用于表示一些相同类型的数据集合,内部提供了一系列用于对集合中元素进行存储的方法。
Collection接口的常见方法;
List是从Collection继承过来,也是一个接口;List扩展自Collection,在Collection基础上新增了一些方法:
由于List是一个接口,所以没法直接实例化,因此JDK中提供了一些对于List接口实现的实现类:
迭代器即游标,将集合处理为类似栈结构的数据结构,通过栈顶指针依次向下搜索元素,直到达到栈底为止
//获取当前集合对象的迭代器(游标)
List<String> list = new ArrayList<>();
Iterator<String> it = list.iterator();
while(it.hasNext()) {
String s = it.next();
if(s.equals("30")) {
it.remove();
}
System.out.println(s);
}
定义比较器(MyComparator)
//创建一个MyComparator类
public class MyComparator implements Comparator<String>{
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
//对数组进行排序
list.sort(new MyComparator());
//匿名内部类使用方法
list.sort(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
return s1.getAge() - s2.getAge();
});
如果被添加到TreeSet中的元素没有实现Comparable接口也可以,此时只需要在创建TreeSet时通过以下构造器,传入排序比较器对象即可:
//User无需实现Comparable接口
//构造TreeSet时传入排序比较器
Set<User> set = new TreeSet<>(
(u1,u2)->u1.getId()-u2.getId());
对中文内容排序需要使用到一个开源插件(jar包)-Pinyin4j
List<String> names = new ArrayList<>();
names.add("柴老师");
names.add("王老师");
names.add("苍老师");
names.add("老王");
names.add("老李");
names.add("小泽老师");
Collections.sort(names,(s1,s2)->{
String p1 = "";
String p2 = "";
for(int i = 0;i<s1.length();i++) {
p1 += PinyinHelper.toHanyuPinyinStringArray(s1.charAt(i))[0];
}
for(int i = 0;i<s2.length();i++) {
p2 += PinyinHelper.toHanyuPinyinStringArray(s2.charAt(i))[0];
}
return p1.compareTo(p2);
});
System.out.println(names);
Set集合也是从Collection扩展而来的子集合,相比List集合来说,Set集合内部存储的数据不是按照添加顺序存储,内部不允许出现重复的元素(不允许出现e1.equals(e2)),对null也只允许出现一个,对于set集合常用的实现主要有以下:
//创建
Set<String> set = new HashSet<String>();
//获取set集合的迭代器
Iterator<String> it = set.iterator();
while(it.hasNext()) {
String s = it.next();
System.out.println(s);
if(s.equals("lily")) {
当多个用户的id一致时,TreeSet会根据compareTo方法判定元素为重复,此时会去除重复
注意事项:
//获取value值
map.get("id");
//foreach遍历
Set<Long> keys = map.keySet();
for (Long l : keys) {
System.out.println(map.get("id").toString());
}
//创建存储数据
Map<Stuent, String> map = new TreeMap<>();
map.put(new Student(), "vaen");
//创建并附加比较器
Map<Stu, Object> map2 = new TreeMap<Stuent, String>(new Comparator<Stu>{
public int compara(Stu s1,Stu s2){
return s1.getAge() - s2.getAge();
}
});