tra*_*ega 8 java collections mixed list arraylist
是否可以在ArrayList中存储对象类型的混合?如果是这样的话?
这是我到目前为止所尝试的:
List<Object> list = new ArrayList<Object>();
list.add(new String("Hello World"));
list.add(new Integer(1));
list.add(new Long(1l));
for (i = 0; i < list.size(); i++) {
if (list.get(i) instanceof String){
sqlPreparedStatement.setString((i+1), (String) list.get(i));
} else if (list.get(i) instanceof Integer) {
sqlPreparedStatement.setInt((i+1), (Integer) list.get(i));
} else if (list.get(i) instanceof Long) {
sqlPreparedStatement.setLong((i+1), (Long) list.get(i));
}
}
Run Code Online (Sandbox Code Playgroud)
但它抛出一个铸造异常.
提前感谢任何输入!
sci*_*ete 18
这是你应该拥有的:
List<Object> list = new ArrayList<Object>();
list.add(new String("Hello World"));
list.add(new Integer(1));
list.add(new Long(1l));
for (Object obj: list) {
if (obj instanceof String){
sqlPreparedStatement.setString((String) obj);
} else if (obj instanceof Integer) {
sqlPreparedStatement.setInt((Integer) obj);
} else if (obj instanceof Long) {
sqlPreparedStatement.setLong((Long) obj);
}
}
Run Code Online (Sandbox Code Playgroud)
Hov*_*els 10
很抱歉让您的游行崩溃,但您不应该使用3(或任何)不同类型的ArrayList开始.如果信息是相关的,则创建一个包含相关信息的类,并创建一个只包含一种类型的ArrayList:此类的对象.
编辑1:
例如说一个类来保存数据,如下所示:
class SqlData {
private String textData;
private int intData;
private long longData;
public SqlData(String textData, int intData, long longData) {
this.textData = textData;
this.intData = intData;
this.longData = longData;
}
public String getTextData() {
return textData;
}
public int getIntData() {
return intData;
}
public long getLongData() {
return longData;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用如下:
List<SqlData> sqlDataList = new ArrayList<SqlData>();
sqlDataList.add(new SqlData("Hello World", 1, 11L));
for (int i = 0; i < sqlDataList.size(); i++) {
try {
sqlPreparedStatement.setString(i + 1, sqlDataList.get(i).getTextData());
sqlPreparedStatement.setInt(i + 1, sqlDataList.get(i).getIntData());
sqlPreparedStatement.setLong(i + 1, sqlDataList.get(i).getLongData());
} catch (SQLException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
你为什么这么努力?PreparedStatement有一个setObject()方法 - 只需使用:
List<Object> list = new ArrayList<Object>();
list.add(new String("Hello World"));
list.add(new Integer(1));
list.add(new Long(1l));
for (int i = 0; i < list.size(); i++)
sqlPreparedStatement.setObject(i + 1, list.get(i)); // NOTE: columns count from 1
Run Code Online (Sandbox Code Playgroud)
注意:java SQL API计算从1而不是从零开始的所有内容,因此列编号为1 ... size()而不是0 ... size() - 1
| 归档时间: |
|
| 查看次数: |
19062 次 |
| 最近记录: |