背景:XXXconstant类中有个写死的static final String[],需要动态地从schema中解析出该String Array。并且去除指定数组集合中的部分元素
// 需从schema动态加载
public static final String[] ALL_KEYS;
static {
Map<String, Object> typesMap = null;
try {
allTypeMap = Util.getAllTypes();
} catch (BadRequestException e) {
e.printStackTrace();
}
Map<String, String> schemaMap = (Map<String, String>) typesMap.get(VALUE_TYPE);
Set<String> schemaKeySet = schemaMap.keySet();
ALL_KEYS = schemaKeySet.toArray(new String[schemaKeySet.size()]);
}
// 定死的几个特例
public static final String[] NO_NEED_KEYS = {ID, COMPANY, TYPE, CREATE_TIME, UPDATE_TIME};
// 其余
然后使数组相减(取交集的补集)
public static String[] arrayContrast(String[] longArr, String[] shortArr) {
List<String> list = new LinkedList<>();
for (String str : longArr) {
if (!list.contains(str)) {
list.add(str);
}
}
for (String str : shortArr) {
if (list.contains(str)) {
list.remove(str);
}
}
String[] result = {};
return list.toArray(result);
}