import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 1. List数据转行文本数据
* 2. 行文本数据转List数据
* 3. List数据转行Json数据
* 4. 行Json数据转List数据
* 5. 行文本数据转行Json数据
* 6. 行Json数据转行文本数据
*
* 说明:List数据,一般是数据库查出的原始数据
* 行文本数据,用于传输的文本间隔格式的数据
* Json数据,用于传输的Json格式的数据(Json中的数据为行记录的Map,key为字段名 )
* 另,Json中为List类型的数据,暂不考虑,跟行文本相似,解析没有行文本快
*
public class DataConvert {
private static String FIELDS_SEPARATOR = ",";
/* 1. List数据转行文本数据 start */
public static boolean convertListToLines(List list,List lines, String fields,String separator){
lines.addAll(convertListToLines(list,fields,separator));
return true;
}
public static List convertListToLines(List list,String fields,String separator){
String[] fieldArray = fields.split(FIELDS_SEPARATOR);
return convertListToLines(list,fieldArray,separator);
}
public static List convertListToLines(List list,String[] fieldArray,String separator){
List lines = new ArrayList();
for(Object obj:list){
StringBuilder line = new StringBuilder();
if(obj instanceof Map){
Map map = (Map)obj;
for(String str:fieldArray){
line.append(map.get(str).toString()).append(separator);
}
}
lines.add(line.substring(0,line.length()-separator.length()));
}
return lines;
}
/* 1. List数据转行文本数据 end */
/* 2. 行文本数据转List数据 start */
public static boolean convertLinesToList(List lines,List list, String fields,String separator){
list.addAll(convertLinesToList(lines,fields,separator));
return true;
}
public static List convertLinesToList(List lines,String fields,String separator){
String[] fieldArray = fields.split(FIELDS_SEPARATOR);
return convertLinesToList(lines,fieldArray,separator);
}
public static List convertLinesToList(List lines,String[] fieldArray,String separator){
List list = new ArrayList();
for(Object obj:lines){
String[] fields = obj.toString().split(separator);
int index=0;
Map map = new HashMap();
for(String str:fieldArray){
map.put(str, fields[index++]);
}
list.add(map);
}
return list;
}
/* 2. 行文本数据转List数据 end */
/* 3. List数据转行Json数据 start */
public static boolean convertListToJson(List list,List jsonList,String separator){
jsonList.addAll(convertListToJson(list,separator));
return true;
}
public static List convertListToJson(List list,String separator){
List jsonList = new ArrayList();
for(Object obj:list){
if(obj instanceof Map){
jsonList.add(JsonConvert.SerializeObject((Map)obj));
}
}
return jsonList;
}
/* 3. List数据转行文本数据 end */
/* 4. 行Json数据转List数据 start */
public static boolean convertJsonToList(List jsonList,List list,String separator){
list.addAll(convertJsonToList(jsonList,separator));
return true;
}
public static List convertJsonToList(List jsonList,String separator){
List list = new ArrayList();
for(Object obj:jsonList){
Map map = (Map)JsonConvert.DeserializeObject(obj.toString(), Map.class);
}
return list;
}
/* 4. List数据转行文本数据 end */
/* 5. 行文本数据转行Json数据 start */
public static boolean convertLinesToJson(List lines,List jsonList, String fields,String separator){
jsonList.addAll(convertLinesToJson(lines,fields,separator));
return true;
}
public static List convertLinesToJson(List lines,String fields,String separator){
String[] fieldArray = fields.split(FIELDS_SEPARATOR);
return convertLinesToJson(lines,fieldArray,separator);
}
public static List convertLinesToJson(List lines,String[] fieldArray,String separator){
List jsonList = new ArrayList();
for(Object obj:lines){
String[] lineArray = obj.toString().split(separator);
int index=0;
Map map = (Map)obj;
for(String str:fieldArray){
map.put(str, lineArray[index++]);
}
jsonList.add(JsonConvert.SerializeObject((Map)obj));
}
return jsonList;
}
/* 5. 行文本数据转行Json数据 end */
/* 6. 行Json数据转行文本数据 start */
public static boolean convertJsonToLines(List jsonList,List lines, String fields,String separator){
lines.addAll(convertJsonToLines(jsonList,fields,separator));
return true;
}
public static List convertJsonToLines(List jsonList,String fields,String separator){
String[] fieldArray = fields.split(FIELDS_SEPARATOR);
return convertJsonToLines(jsonList,fieldArray,separator);
}
public static List convertJsonToLines(List jsonList,String[] fieldArray,String separator){
List lines = new ArrayList();
for(Object obj:jsonList){
Map map = (Map)JsonConvert.DeserializeObject(obj.toString(), Map.class);
StringBuilder line = new StringBuilder();
for(String str:fieldArray){
line.append(map.get(str).toString()).append(separator);
}
lines.add(line.substring(0,line.length()-separator.length()));
}
return lines;
}
/* 6. 行Json数据转行文本数据 end */
public static Map convertListToMap(List data,String key){
Map ret = new HashMap();
for(Object obj:data){
if(obj instanceof Map){
Map record = (Map)obj;
ret.put(record.get(key),record);
}
}
return ret;
}
/* 7. List数据Map数据 start */
/* 7. List数据Map数据 end */
// 将驼峰风格替换为下划线风格
public static String toUnderline(String str) {
Matcher matcher = Pattern.compile("[A-Z]").matcher(str);
StringBuilder builder = new StringBuilder(str);
for (int i = 0; matcher.find(); i++) {
builder.replace(matcher.start() + i, matcher.end() + i, "_" + matcher.group().toLowerCase());
}
if (builder.charAt(0) == '_') {
builder.deleteCharAt(0);
}
return builder.toString();
}
// 将下划线风格替换为驼峰风格
public static String toCamelhump(String str) {
str = str.toLowerCase();
Matcher matcher = Pattern.compile("_[a-z]").matcher(str);
StringBuilder builder = new StringBuilder(str);
for (int i = 0; matcher.find(); i++) {
builder.replace(matcher.start() - i, matcher.end() - i, matcher.group().substring(1).toUpperCase());
}
if (Character.isUpperCase(builder.charAt(0))) {
builder.replace(0, 1, String.valueOf(Character.toLowerCase(builder.charAt(0))));
}
return builder.toString();
}
public static void main(String[] args) {
System.out.println(toCamelhump("HELLO_ASDF"));
System.out.println(toUnderline("helloWord,testWasdf,asdjfRsdf"));
}
}