我假设您无法更改输入格式。
我建议您创建一个模型来代表客户:
public class Client {
private final String name;
private final byte age; //Nobody should be older than 256
private final int total;
/* Construct model */
/* Getters/Functions */
}
我还建议您在内部创建一个工厂方法,Client
以从您的字符串输入创建类。
public static Client parseClient(String clientRep){
String[] clientData = clientRep.split(',');
Client newClient = new Client(); //TODO: Name conventionally.
newClient.name = clientData[0];
newClient.age = Byte.valueOf(clientData[1]);
newClient.total = Integer.valueOf(clientData[2]);
return newClient;
}
现在,您可以将这些添加到地图 ( Map<String, Client>
)。
String clientFromWherever = getWhateverDataFromWherever();
Map<String, Client> clientel = new HashMap<>();
Client addingToMap = Client.parseClient(clientFromWherever);
clientel.put(addingToMap.getName() /* or however the name should be got */, addingToMap);
那应该做得足够好。
=====
但是 - 如果您不想使用客户端对象,我建议您创建一个Map<String, int[]>
并将该年龄和费用存储在数组中。如果您的费用不超过Short.MAXVALUE
使用short[]
. 存储大量数组列表(或任何复杂的集合)只是为了存储少量数据是不必要的。
ArrayList<Row> rows = dao.getClientActivity();
Map<String, int[]> clientelData = new HashMap<>();
for(Row clientRow : rows) {
if (!map.containsKey(clientRow.clientName) {
int[] clientNumericalData = new int[2];
map.put(clientRow.clientName, clientNumericalData);
}
}