【发布时间】:2020-08-26 22:50:26
【问题描述】:
public class Dashboard {
int REQUEST_ID, PRICE, Status;
String LOGIN_USER;
public int getREQUEST_ID() {
return REQUEST_ID;
}
public void setREQUEST_ID(int rEQUEST_ID) {
REQUEST_ID = rEQUEST_ID;
}
//all getters and setters
public class MapKey {
private Integer id;
private String name;
public MapKey(Integer id, String name) {
this.id = id;
this.name = name;
}
@Override Hashcode and equals
public class DBConnection {
public ArrayList<Dashboard> getStoreResult() {
ArrayList<Dashboard> dashRec;
try{
Class.forName("");
Connection con=DriverManager.getConnection("");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("");
HashMap<Object, List<Dashboard>> map = new HashMap<>();
HashMap<Integer, Integer> mapStatus = new HashMap<>();
while (rs.next()) {
Integer id = rs.getInt(1);
MapKey key = new MapKey(rs.getInt(1), rs.getString(2));
if (!map.containsKey(key)) {
dashRec= new ArrayList<Dashboard>();
map.put(key, dashRec);
}
Dashboard dash = new Dashboard();
dash.setREQUEST_ID(id);
dash.setLOGIN_USER(rs.getString(2));
dash.setPRICE(rs.getInt(3));
dash.setStatus(rs.getInt(4));/////STATUS
map.get(id).add(dash);
if (!mapStatus.containsKey(id) || mapStatus.get(id)>dash.getPROCESSED()){
mapStatus.put(id, dash.getPROCESSED());
}
}
}
}
}
我想创建一个新的Hashmap,键为req_id+name+特定集合的最低状态编号。这里的集合是指特定ReqId的行数。例如:对于 reqid 123,我们有 7 行构成一个集合。最低状态号是 1.所以值键将是 123 A 1.类似地,对于键 456,我需要值 456 B 2.所以对于示例数据哈希图必须包含 3 个具有 3 个值的键。我想要 n 个 Reqid。每个键的值是 arraylist,它由作为对象的特定 id 的行组成。值在代码中定义。
我只想改变地图的键。
【问题讨论】:
-
req 123 名称为 A 有 2 次出现状态 1。您如何区分使用哪一个?
-
它可以是无穷无尽的。我只需要一个最低的。所以我们需要检查每个出现的状态号。我们比较它们中的每一个并从中得到最低的。
-
它不像一个特定的使用。我只需要最低的编号。即 123 reqid,它是 1。
-
使用“最低状态”作为键的一部分是没有意义的。 “最低”是什么?也许,您希望将 req_id 和 name 作为键,但只保留那些状态等于所有具有相同 req_id 和 name 的值的最低状态的值?还是您只想将“状态”作为键的一部分?
-
“显示最低状态”和将最低状态作为键的一部分是有区别的。具有不同状态值的
Dashboard实例应该如何处理?
标签: java sql object collections hashmap