2016/11/24

  1. 正则表达式
  2. Collection
  3. List(ArrayList和LinkedList)
  4. Set(HashSet和TreeSet)
  5. Map(HashMap和TreeMap)

正则表达式

Pattern类表示一个编译了的正则表达式
Matcher类表示通过解析Pattern,对输入的字符串执行匹配操作的引擎。

Pattern p = Pattern.compile("zhangsan");//Pattern --定义规则只能为zhangsan
Matcher matcher = p.match("zhangsan");//
System.out.println(matcher.matches()); //true
Pattern p = Pattern.compile("^\\d{6}(19|20)\\d{2}((0[1-9])|(11|12|10))((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))\\d{3}([0-9]|x)");//定义规则
System.out.println("输入身份证号");
Scanner s = new Scanner(System.in);
String input = s.next();
Matcher matcher = p.matcher(input);
System.out.println(matcher.matches());
System.out.println("输入邮箱地址");
Pattern p2 = Pattern.compile("^[a-zA-Z0-9]{6,16}@(163|qq|email)[.](com|cn)");
Matcher matcher2 = p2.matcher(s.next());
System.out.println(matcher2.matches());

集合框架

主要功能:用来将存储的数据以某种结构组织,并以特定的方式来访问这些数据
目的是提供一个处理对象的通用框架,减少程序员处理不同对象集合时的编码量

Collection

位于Set接口和List接口的最顶端(父接口)

List接口

继承自Collection接口

List中的元素是有顺序的
List通常是允许重复元素
List的实现类通常支持null元素
可以通过索引访问List对象容器中的元素

ArrayList接口

构造一个初始容量为 10 的空列表。

List<String> list = new ArrayList<>();
    list.add("增加");//增加元素
    list.add("元素");
    list.add("11");
    list.add("22");
    list.size();//返回列表中的元素数 长度 
    list.remove(3);//删除元素  3下标
    list.set(2, "东西");//改元素  2下标 
    System.out.println(list);//查看整个集合中的元素
    System.out.println(list.get(0));//查看0下标对应的元素
    list.clear();//清除集合中所有元素
    System.out.println(list);
    System.out.println(list);
    Object[] o = list.toArray();//返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组。
    System.out.println(Arrays.toString(o));//遍历此数组
LinkedList接口

构造一个空列表
List 接口的链接列表实现

其余用法和ArrayList一样
    LinkedList<String> list = new LinkedList<>();
    System.out.println(list);
    list.addFirst("最前面");//将指定元素插入此列表的开头
    list.addLast("最后面");//将指定元素添加到此列表的结尾
    System.out.println(list);
    System.out.println(list.peek());//获取但不移除此列表的头(第一个元素)
    System.out.println(list.poll());//获取并移除此列表的头(第一个元素)

Set接口

继承自Collection

Set类型容器中不能包含重复元素。当加入一个元素到容器中时候,要比较元素的内容是否存在重复的,所以加入Set类型对象容器的对象必须重写equals()方法。
元素可能有顺序,也可能没有顺序
因为元素可能没有顺序,所以不能基于索引访问Set中的元素。

HashSet

基于哈希算法的Set接口实现

当遍历HashSet时,其中的元素是没有顺序的。
HashSet中不允许出现重复元素。这里的重复元素是指有相同的哈希码,并且用equals()方法进行比较时,返回true的两个对象
允许包含null元素

Set<String> set = new HashSet<>();
set.add("张三");//增加
set.add("李四");
set.add("王五");
set.add("小六");
set.add("小七");
set.size();//返回 set 中的元素数
set.remove("小七");//如果指定元素存在于此 set 中,则将其移除
System.out.println(set);
Iterator<String> it = set.iterator();  //Iterator迭代器
while(it.hasNext()){    //遍历
System.out.print(it.next() + ",");
treeSet

不仅实现类Set接口,还实现了SortedSet接口,从而保证集合中的对象按照一定的顺序排序。
当向TreeSet集合中添加一个对象时,会把它插入到有序的对象序列中。
这种排序不是按照添加顺序,而是按照一定的算法排序。

Map接口

是java集合框架中不同于Collection接口的另一个重要接口,它对应的是在一种从键(Key)到值(Value)的对应关系的集合。也就是说,Mpa类型的对象容器里保存着两组对象。

Map<String, String> map = new HashMap<>();
map.remove("as");//删除key为"as"的key和Value
map.size();//返回该映射中包含的键/值映射关系数
map.isEmpty();//如果该映射为空,则返回true
map.get("hb");//返回与指定键相关的值

HashMap类

基于哈希算法的Map接口的实现。
HashMap将它的键保存在哈希表中进行维护,键是唯一的。
HashMap并不保证键以特定顺序排列,特别是不保证顺序永久不变。

HashMap实现了Map接口,从而具有Map接口的方法。

TreeMap类

TreeMap类是基于红黑树算法的Map接口实现。

键的顺序按照自然顺序或者自定义顺序两种方式排列。

没有iterator()方法。

SortedMap<String, String> map = new TreeMap<>();
map.put("as", "鞍山");//增加
map.put("hn", "湖南");
map.put("hb", "湖北");
map.put("hN", "河南");
map.put("hB", "河北");
System.out.println(map);
Set<String> set = map.keySet(); //将key装入set中
Iterator<String> it = set.iterator();
while(it.hasNext()){
String key = it.next();//将key遍历
String value = map.get(key);//得到key对应的value
System.out.print(value + ",");
        }

^

匹配字符串的开始

$

匹配字符串的结束

\s

任何空白字符

\S

任何非空白字符

\d

匹配一个数字字符,等价于[0-9]

\D

除了数字之外的任何字符,等价于[^0-9]

\w

匹配一个数字、下划线或字母字符,等价于[A-Za-z0-9_]

\W

任何非单字字符,等价于[^a-zA-z0-9_]

.

除了换行符之外的任意字符

{n}

匹配前一项n次

{n,}

匹配前一项n次,或者多次

{n,m}

匹配前一项至少n次,但是不能超过m次

*

匹配前一项0次或多次,等价于{0,}

+

匹配前一项1次或多次,等价于{1,}


匹配前一项0次或1次,也就是说前一项是可选的,等价于{0,1}

x|y

匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。

[xyz]

字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。

[a-z]

字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.

(pattern)

匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用0…9属性。要匹配圆括号字符,请使用“(”或“)”。