Tuesday, November 07, 2006

LinkedHashSet and HashSet


package justtest;

import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

public class TestSet {

public static void main(String[] args) {

/** Create set that retains Order-of-Insertion */
Set set = new LinkedHashSet();
set.add("1");
set.add("2");
set.add("3");
set.add("2");
for (Iterator it = set.iterator(); it.hasNext();) {
System.out.println(it.next()); //1,2,3
}

/** Create set that does not retain Order-of-Insertion */
Set set2 = new HashSet();
set2.add("1");
set2.add("2");
set2.add("3");
set2.add("2");
set2.add("3");
for (Iterator it = set2.iterator(); it.hasNext();) {
System.out.println(it.next()); //3,2,1
}
}
}

Thursday, November 02, 2006

Java regular expression (edit date)


package com.mmm.http;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.mmm.model.AppField;

public class EditDate {

public static String editDate(String date, int type) {
String msg = null;
String patrn = pattern(type);
Pattern pat = Pattern.compile(patrn);
Matcher matcher = pat.matcher(date);
if (!matcher.find()) {
msg = "Invalid date format.";
}
return msg;
}

public static String pattern(int type) {
String p = "";
switch (type) {
case AppField.DATE_ISO:
//must be nnnn-nn-nn
p = "\\d{4}-\\d{2}-\\d{2}"; // ISO
break;
case AppField.DATE_USA:
p = "\\d{2}/\\d{2}/\\d{4}";
break;
case AppField.DATE_EUR:
p = "\\d{4}.\\d{2}.\\d{2}";
break;
default:
p = "\\d{4}-\\d{2}-\\d{2}"; // ISO
break;
}
p = "^" + p + "$"; //important!
return p;
}

public static void main(String[] args) {
System.out.println("msg=" + editDate("2000-10-10", 24));
System.out.println("msg=" + editDate("22/12/1999", 25));
System.out.println("msg=" + editDate("11/11/99", 20));
}
}


Some Predefined Character Classes:

. Any character (may or may not match line terminators)
\d A digit: [0-9]
\D A non-digit: [^0-9]
\s A whitespace character: [ \t\n\x0B\f\r]
\S A non-whitespace character: [^\s]
\w A word character: [a-zA-Z_0-9]
\W A non-word character: [^\w]