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 件のコメント:
コメントを投稿