概念图
每种集合的特点
Collections和Comparator接口排序
package day13;
import java.util.Comparator;
public class MyComparator implements Comparator<Student>{
@Override
public int compare(Student arg0, Student arg1) {
return arg1.getAge()-arg0.getAge();
}
}
public class Test01 {
public static void main(String[] args) {
ArrayList<Student> clazz = new ArrayList<Student>();
Student zhangsan = new Student("张三", 15);
Student lisi = new Student("李四", 12);
Student wangwu = new Student("王五", 19);
Student zhaoliu = new Student("赵六", 10);
clazz.add(zhangsan);
clazz.add(lisi);
clazz.add(wangwu);
clazz.add(zhaoliu);
System.out.println("********************************");
Collections.sort(clazz, new MyComparator());
for (int i = 0; i < clazz.size(); i++) {
System.out.println(clazz.get(i).getName() + "\t"
+ clazz.get(i).getAge());
}
System.out.println("********************************");
}
- 结果
将map转为set输出key和value
package comparatortest;
import java.util.*;
public class MapToSet {
public static void main(String[] args) {
Map<String, String> m=new TreeMap<>();
m.put("CC", "张三");
m.put("DD", "李四");
m.put("AA", "王五");
m.put("BB", "赵六");
Set all=m.entrySet();
Iterator i=all.iterator();
while (i.hasNext()) {
Map.Entry me=(Map.Entry)i.next();
System.out.println(me.getKey()+"\t"+me.getValue());
}
}
}
- 结果
Set
- Hashset无序唯一 treeset
- Set中的元素是唯一的,即元素不重复,如果set中不存在i,则添加i到set,如果存在则不改变set
- 泛型不能使用简单数据类型,只能使用
- 遍历set应用iterator
Map
Hashmap与hashtable区别
Hashtable键值对不可以为null,速度比hashmap慢
Hashmap键值对允许使用null
Collentions
- Sort方法
- Reverse反转(只针对于list,因为list有序)
- Max返回最大值
- Min返回最小值
快速排序
泛型
- 自定义泛型:可以自己设置自己定义的类可以接收的数据类型的,比如定义一个Person类,只让他接收Dog类的宠物,或者是只让他接收Cat类的宠物
- Public void Person{} T你传什么类型,Person的引用就只能接收哪种类型的引用
- Public void Person{} 限制传进来的泛型必须是Pet的子类
枚举
正则表达式
概念
- 对字符串按照一定的规则进行匹配
使用形式
- ^表示开始 $表示结束
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
- 注意:在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句 :
boolean b = Pattern.matches(“a*b”, “aaaaab”);
等效于上面的三个语句,尽管对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。
正则表达式的使用
package patterntest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 密码8~16位,必须字母、数字、下划线组合 必须有数字、大写字母、小写字母
*/
public class PatternTest {
public static void main(String[] args) {
String str="35486sdaASD_";
//密码8~16位,必须字母、数字、下划线组合 必须有数字、大写字母、小写字母
//(?![0-9a-z_]{8,16}$) ?!表示不包括其中所包含的数据模式
Pattern pattern=Pattern.compile("^(?![0-9a-z_]{8,16}$)(?![a-zA-Z_]{8,16}$)(?![0-9A-Z_]{8,16}$)\\w{8,16}$");
Matcher matcher=pattern.matcher(str);
boolean bb=matcher.matches();
System.out.println(bb);
}
}