0

我有这个用于生成数据中心 ID 和数据中心名称的 Java 对象。

private List<listDatacentersObj> listDatacenters;

public void initListDatacenters() throws SQLException {
    // Generate List of Datacenters
    listDatacenters = new ArrayList<>();

    if (ds == null) {
        throw new SQLException("Can't get data source");
    }
    /* Initialize a connection to Oracle */
    Connection conn = ds.getConnection();

    if (conn == null) {
        throw new SQLException("Can't get database connection");
    }
    /* With SQL statement get all settings and values */
    PreparedStatement ps = conn.prepareStatement("select y.componentstatsid, y.name "
            + "FROM component x, componentstats y where x.componentstatsid = y.componentstatsid and y.componenttypeid = 1000");

    try {
        //get data from database
        ResultSet result = ps.executeQuery();
        while (result.next()) {
            /* Put the the data from Oracle into Hash Map */
            listDatacenters.add(new listDatacentersObj(result.getInt("COMPONENTSTATSID"), result.getString("NAME")));

        }
    } finally {
        ps.close();
        conn.close();
    }
}

public class listDatacentersObj {

    private int datacenterid;
    private String datacentername;

    public listDatacentersObj(int datacenterid, String datacentername){

        this.datacenterid = datacenterid;
        this.datacentername = datacentername;

    }

    public int getDatacenterid() {
        return datacenterid;
    }

    public void setDatacenterid(int datacenterid) {
        this.datacenterid = datacenterid;
    }

    public String getDatacentername() {
        return datacentername;
    }

    public void setDatacentername(String datacentername) {
        this.datacentername = datacentername;
    }
            @Override
    public String toString()
    {
        return datacentername;
    }

}

// Get the list with Datacenters
public List<listDatacentersObj> getlistDatacenters() throws SQLException {
    // Get the list of Datacenters from Oracle

    return listDatacenters;
}

问题是如何使用数据中心密钥获取数据中心名称。与 hashmap 类似,我想根据键获取值。

4

1 回答 1

2

好吧,如果您的键是componentstatsid,那么只需将检索listDatacentersObj到的对象存储在 aHashMap中,如下所示:

// private List<listDatacentersObj> listDatacenters; use the below map instead of this list
private Map<Integer, listDatacentersObj> listDatacenters =
                      new HashMap<Integer, listDatacentersObj>();

...

public void initListDatacenters() throws SQLException {

    ...

    try {
            //get data from database
            ResultSet result = ps.executeQuery();
            while (result.next()) {
                /* Put the the data from Oracle into Hash Map */
                final int id = result.getInt("COMPONENTSTATSID");
                listDatacenters.put(id, new listDatacentersObj(id, result.getString("NAME")));

            }
        } finally {
            ps.close();
            conn.close();
        }
    }
}
于 2012-12-30T19:46:23.817 回答