集合框架

来源:互联网 发布:王者荣耀手办淘宝 编辑:程序博客网 时间:2024/06/03 22:04

概念图

这里写图片描述

每种集合的特点

这里写图片描述

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);         }}
0 0
原创粉丝点击