import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class StringUtils {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List l = new ArrayList();
for (int i = 0; i < 100; i++) {
l.add(Integer.toString(i));
}
System.out.println(StringUtils.object2String(l, ""));
System.out.println("----------");
Map m = new HashMap();
for (int i = 0; i < 10; i++) {
Map map = new HashMap();
for (int j = 0; j < 10; j++) {
map.put("key" + j, "val" + j);
}
l.add(map);
m.put(i, map);
}
System.out.println(StringUtils.object2String(m, ""));
System.out.println("----------");
System.out.println(StringUtils.object2String(l, ""));
System.out.println("----------");
for (int i = 0; i < 2; i++) {
List l2 = new ArrayList(l);
l.add(l2);
}
Map map = new HashMap();
for (int i = 0; i < 10; i++) {
List l3 = new ArrayList();
for (int j = 0; j < 10; j++) {
l3.add(""+ i + "" + j);
}
map.put("key" + i, l3);
}
l.add(map);
System.out.println(StringUtils.object2String(l, ""));
System.out.println("----------");
l.add(new String[]{"arr1", "arr2", "arr3", "arr4", "arr5", "arr6", "arr7", "arr8", "arr9", "arr0"});
System.out.println(StringUtils.object2String(l, ""));
}
public static final String LINE_SEPARATOR = System.getProperty("line.separator");
public static final String INDENT = " ";
public static final String BLANK = " ";
public static final String COLON = ":";
public static final String LEFT_CURLY_BRACKET = "{";
public static final String RIGHT_CURLY_BRACKET = "}";
public static final String LEFT_SQUARE_BRACKET = "{";
public static final String RIGHT_SQUARE_BRACKET = "}";
@SuppressWarnings("unchecked")
public static String object2String(Object obj, String indent) {
StringBuilder sb = new StringBuilder();
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
if (Iterable.class.isAssignableFrom(obj.getClass())) {
sb.append(StringUtils.iterator2String((Iterable) obj, indent + StringUtils.INDENT));
} else if (Map.class.isAssignableFrom(obj.getClass())) {
sb.append(StringUtils.map2String((Map) obj, indent + StringUtils.INDENT));
} else if (obj instanceof Object[]) {
sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT));
} else {
sb.append(obj);
}
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
return sb.toString();
}
@SuppressWarnings("unchecked")
public static String iterator2String(Iterable it, String indent) {
StringBuilder sb = new StringBuilder();
int index = 0;
for (Object obj : it) {
sb.append(indent);
sb.append(StringUtils.LEFT_SQUARE_BRACKET);
sb.append(StringUtils.BLANK);
sb.append(index);
sb.append(StringUtils.BLANK);
sb.append(StringUtils.RIGHT_SQUARE_BRACKET);
sb.append(StringUtils.BLANK);
sb.append(StringUtils.COLON);
sb.append(StringUtils.BLANK);
if (Iterable.class.isAssignableFrom(obj.getClass())) {
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.iterator2String((Iterable) obj, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else if (Map.class.isAssignableFrom(obj.getClass())) {
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.map2String((Map) obj, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else if (obj instanceof Object[]) {
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else {
sb.append(obj);
}
index++;
sb.append(StringUtils.LINE_SEPARATOR);
}
return sb.toString();
}
@SuppressWarnings("unchecked")
public static String map2String(Map map, String indent) {
StringBuilder sb = new StringBuilder();
for (Object obj : map.entrySet()) {
Entry e = (Entry) obj;
Object val = e.getValue();
sb.append(indent);
sb.append(e.getKey());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.COLON);
sb.append(StringUtils.BLANK);
if (Iterable.class.isAssignableFrom(val.getClass())) {
sb.append(val.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.iterator2String((Iterable) val, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else if (Map.class.isAssignableFrom(val.getClass())) {
sb.append(val.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(map2String((Map) val, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else if (obj instanceof Object[]) {
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else {
sb.append(val);
}
sb.append(StringUtils.LINE_SEPARATOR);
}
return sb.toString();
}
@SuppressWarnings("unchecked")
public static String array2String(Object[] arr, String indent) {
StringBuilder sb = new StringBuilder();
int index = 0;
for (Object obj : arr) {
sb.append(indent);
sb.append(StringUtils.LEFT_SQUARE_BRACKET);
sb.append(StringUtils.BLANK);
sb.append(index);
sb.append(StringUtils.BLANK);
sb.append(StringUtils.RIGHT_SQUARE_BRACKET);
sb.append(StringUtils.BLANK);
sb.append(StringUtils.COLON);
sb.append(StringUtils.BLANK);
if (Iterable.class.isAssignableFrom(obj.getClass())) {
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.iterator2String((Iterable) obj, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else if (Map.class.isAssignableFrom(obj.getClass())) {
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.map2String((Map) obj, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else if (obj instanceof Object[]) {
sb.append(obj.getClass().getCanonicalName());
sb.append(StringUtils.BLANK);
sb.append(StringUtils.LEFT_CURLY_BRACKET);
sb.append(StringUtils.LINE_SEPARATOR);
sb.append(StringUtils.array2String((Object[]) obj, indent + StringUtils.INDENT));
sb.append(indent);
sb.append(StringUtils.RIGHT_CURLY_BRACKET);
} else {
sb.append(obj);
}
index++;
sb.append(StringUtils.LINE_SEPARATOR);
}
return sb.toString();
}
}
2011年6月13日月曜日
JAVA ListやMapや配列をStringへ変換(ログ表示用)
システム作っていると、Debug用のLogにListの内容や、Mapの内容を整形して出力したいときがでてくるんだよね。
そんなときに使えるよ。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿