Hallo zusammen,
ich habe foldendes Problem:
Ich habe einen String, der als Array aufgebaut ist, also so: {1000,2000,3000,...}
Dazu habe ich eine Map, die zu jeder Zahl einen entsprechenden Namen enthält, zB:
1000 - Haus
2000 - Baum
3000 - Tier
Jetzt möchte ich den String umwandeln, und zwar von {1000,2000,3000} in {Haus,Baum,Tier}.
Zudem soll jeder Eintrag nur einmal vorkommen. Das funktioniert auch alles, allerdings find ich das hässlich, wie ich das gelöst habe.
Hat jemand eine Idee, wie das eleganter zu lösen ist?
ich habe foldendes Problem:
Ich habe einen String, der als Array aufgebaut ist, also so: {1000,2000,3000,...}
Dazu habe ich eine Map, die zu jeder Zahl einen entsprechenden Namen enthält, zB:
1000 - Haus
2000 - Baum
3000 - Tier
Jetzt möchte ich den String umwandeln, und zwar von {1000,2000,3000} in {Haus,Baum,Tier}.
Zudem soll jeder Eintrag nur einmal vorkommen. Das funktioniert auch alles, allerdings find ich das hässlich, wie ich das gelöst habe.
Hat jemand eine Idee, wie das eleganter zu lösen ist?
Code:
public class GroupFormattingModel extends FormattingTableModel {
public static final SortedMap<String, Object> GROUPS = new TreeMap<String, Object>();
static {
GROUPS.put("1000", "Haus");
GROUPS.put("1010", "Sonderartikel");
GROUPS.put("1020", "Bestellwert");
}
public GroupFormattingModel () {
super("GROUP");
}
private String groupNameToNumber(String group){
String val = "";
for(Map.Entry<String, Object> map : GROUPS.entrySet()){
if(map.getValue().equals(group)){
val = ""+map.getKey();
break;
}
}
return val;
}
private String groupNumberToName(String group){
String val = (String)GROUPS.get(group);
if(val == null) return "";
return val;
}
public static List<String> groupStringAsList(String group){
group = group.replaceAll("[\\{\\}]", "");
List<String> groups = new ArrayList<String>(Arrays.asList(dgroup.split(",")));
return groups;
}
public static String groupListAsString(List<String> groups){
StringBuilder sb = new StringBuilder();
boolean any = false;
for(String s : groups){
if(any) sb.append(",");
sb.append(s);
any = true;
}
return sb.toString();
}
@Override
protected String formatValueDownwards(String val) throws Exception {
if(val.length() < 3) return "";
List<String> groupsAsNames = groupStringAsList(val, ";");
List<String> groupsAsNumbers = new ArrayList<String>();
for(String s : groupsAsNames){
groupsAsNumbers.add(groupNameToNumber(s));
}
StringBuilder sb = new StringBuilder("{");
sb.append(groupListAsString(groupsAsNumbers, ","));
sb.append("}");
return sb.toString();
}
@Override
protected String formatValueUpwards(String val) throws Exception {
if(val.length() < 3) return "";
List<String> groupsAsNumbers = groupStringAsList(val, ",");
List<String> groupsInNames = new ArrayList<String>();
for(String s : groupsAsNumbers)
groupsInNames.add(groupNumberToName(s));
StringBuilder sb = new StringBuilder("{");
sb.append(groupListAsString(groupsInNames, ";"));
sb.append("}");
return sb.toString();
}
}
Zuletzt bearbeitet: