如何在java中将字符串数组更改为ArrayList
下面是定义字符串数组(25)的原始代码。它工作得很好。但我不需要把它定义为25。相反,我使用了arraylist。请检查我的密码 使用数组字符串:如何在java中将字符串数组更改为ArrayList,java,arrays,string,arraylist,Java,Arrays,String,Arraylist,下面是定义字符串数组(25)的原始代码。它工作得很好。但我不需要把它定义为25。相反,我使用了arraylist。请检查我的密码 使用数组字符串: public String[] getemailAddr(String strAccountnbr) throws Exception { String strQuery2 = null; ResultSet rs = null; PreparedStatement ps = null;
public String[] getemailAddr(String strAccountnbr) throws Exception {
String strQuery2 = null;
ResultSet rs = null;
PreparedStatement ps = null;
String[] emailAddress = new String[25];
int i=0;
strQuery2 = "SELECT c.EmailAddress AS EmailAddress" +
" FROM customeremailid c " +
"WHERE c.AccountNbr = ? " ;
logMsg("strQuery2: "+strQuery2);
ps = getDBConn().prepareStatement(strQuery2);
ps.setString(1, strAccountnbr);
rs = ps.executeQuery();
while(rs.next())
{
emailAddress[i]=(rs.getString("EmailAddress"));
logMsg("emailAddress[i]"+" "+i+": "+emailAddress[i]);
i=i+1;
}
return emailAddress;
}
这里,我需要将字符串数组更改为Arraylist。我试过这样的东西
public String[] getemailAddr(String strAccountnbr) throws Exception {
String strQuery2 = null;
ResultSet rs = null;
PreparedStatement ps = null;
//Newly tried //
ArrayList<String> strArrEmailIds = new ArrayList<String>();
String[] emailAddress= new String[strArrEmailIds.size()];
strArrEmailIds.toArray(emailAddress);
//Newly tried //
int i=0;
strQuery2 = "SELECT c.EmailAddress AS EmailAddress" +
" FROM customeremailid c " +
"WHERE c.AccountNbr = ? " ;
logMsg("strQuery2: "+strQuery2);
ps = getDBConn().prepareStatement(strQuery2);
ps.setString(1, strAccountnbr);
rs = ps.executeQuery();
while(rs.next())
{
emailAddress[i]=(rs.getString("EmailAddress"));
logMsg("emailAddress[i]"+" "+i+": "+emailAddress[i]);
i=i+1;
}
return emailAddress;
}
public String[]getemailAddr(String strAccountnbr)引发异常{
字符串strQuery2=null;
结果集rs=null;
PreparedStatement ps=null;
//新尝试的//
ArrayList strarremailds=新的ArrayList();
String[]emailAddress=新字符串[strArrEmailIds.size()];
strarremailds.toArray(电子邮件地址);
//新尝试的//
int i=0;
strQuery2=“选择c.EmailAddress作为EmailAddress”+
“来自customeremailid c”+
“其中c.AccountNbr=?”;
logMsg(“strQuery2:+strQuery2”);
ps=getDBConn().prepareStatement(strQuery2);
ps.setString(1,strAccountnbr);
rs=ps.executeQuery();
while(rs.next())
{
emailAddress[i]=(rs.getString(“emailAddress”);
logMsg(“emailAddress[i]”+“+i+”:“+emailAddress[i]);
i=i+1;
}
返回电子邮件地址;
}
电子邮件ID是从数据库而不是example.com获取的
但是我越来越
java.lang.ArrayIndexOutOfBoundsException:0
错误
在这一行。
emailAddress[i]=(rs.getString(“emailAddress”)代码>
请帮忙 声明为
ArrayList<String> emailAddress= new ArrayList<String>();
...
emailAddress.add((rs.getString("EmailAddress"));
宣布为
ArrayList<String> emailAddress= new ArrayList<String>();
...
emailAddress.add((rs.getString("EmailAddress"));
如何将数组
转换为数组列表
?
Arrays.asList(myArray)
在您的情况下,您可以有一个列表
,在结果集
中,您可以将它们添加到列表中,如下所示
List<String> emails = new ArrayList<String>();
while(...){
emails.add(rs.getString("EmailAddress"));
}
List emails=new ArrayList();
而(…){
emails.add(rs.getString(“EmailAddress”);
}
如何将数组
转换为数组列表
?
Arrays.asList(myArray)
在您的情况下,您可以有一个列表
,在结果集
中,您可以将它们添加到列表中,如下所示
List<String> emails = new ArrayList<String>();
while(...){
emails.add(rs.getString("EmailAddress"));
}
List emails=new ArrayList();
而(…){
emails.add(rs.getString(“EmailAddress”);
}
这不是使用阵列列表的方式
首先,你需要写:
List<String> strArrEmailIds = new ArrayList<>();
要将其转换回字符串[]
,您可以执行以下操作:
String[] arr = emailAddress.toArray(new String[emailAddress.size()]);
以下是我对最终代码的建议:
public String[] getemailAddr(String strAccountnbr) throws Exception {
final List<String> emailAddress = new ArrayList<>();
final String strQuery2 = "SELECT c.EmailAddress AS EmailAddress"
+ " FROM customeremailid c "
+ "WHERE c.AccountNbr = ? ";
try (final PreparedStatement ps = getDBConn().prepareStatement(strQuery2)) {
ps.setString(1, strAccountnbr);
try (final ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
emailAddress.add(rs.getString("EmailAddress"));
}
}
}
return emailAddress.toArray(new String[emailAddress.size()]);
}
public String[]getemailAddr(String strAccountnbr)引发异常{
最终列表emailAddress=新的ArrayList();
最终字符串strQuery2=“选择c.EmailAddress作为EmailAddress”
+“来自customeremailid c”
+“其中c.AccountNbr=?”;
try(final PreparedStatement ps=getDBConn().prepareStatement(strQuery2)){
ps.setString(1,strAccountnbr);
try(最终结果集rs=ps.executeQuery()){
while(rs.next()){
emailAddress.add(rs.getString(“emailAddress”);
}
}
}
返回emailAddress.toArray(新字符串[emailAddress.size()]);
}
我已删除您对null
的无意义分配。我已经添加了try-with-resources块来关闭您的外部资源,您的代码是一个巨大的内存泄漏。这不是使用阵列列表的方式
首先,你需要写:
List<String> strArrEmailIds = new ArrayList<>();
要将其转换回字符串[]
,您可以执行以下操作:
String[] arr = emailAddress.toArray(new String[emailAddress.size()]);
以下是我对最终代码的建议:
public String[] getemailAddr(String strAccountnbr) throws Exception {
final List<String> emailAddress = new ArrayList<>();
final String strQuery2 = "SELECT c.EmailAddress AS EmailAddress"
+ " FROM customeremailid c "
+ "WHERE c.AccountNbr = ? ";
try (final PreparedStatement ps = getDBConn().prepareStatement(strQuery2)) {
ps.setString(1, strAccountnbr);
try (final ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
emailAddress.add(rs.getString("EmailAddress"));
}
}
}
return emailAddress.toArray(new String[emailAddress.size()]);
}
public String[]getemailAddr(String strAccountnbr)引发异常{
最终列表emailAddress=新的ArrayList();
最终字符串strQuery2=“选择c.EmailAddress作为EmailAddress”
+“来自customeremailid c”
+“其中c.AccountNbr=?”;
try(final PreparedStatement ps=getDBConn().prepareStatement(strQuery2)){
ps.setString(1,strAccountnbr);
try(最终结果集rs=ps.executeQuery()){
while(rs.next()){
emailAddress.add(rs.getString(“emailAddress”);
}
}
}
返回emailAddress.toArray(新字符串[emailAddress.size()]);
}
我已删除您对null
的无意义分配。我添加了try with resources块来关闭您的外部资源,您的代码是一个巨大的内存泄漏。如果您有一个ArrayList
,那么您就不再需要数组了,实际上ArrayList
是由数组本身及其动态大小支持的
List<String> emailAddress= new ArrayList<String>(); // dynamic array
...
while(rs.next()){
emailAddress.add((rs.getString("EmailAddress"));
...
}
return emailAddress.toArray(new String[emailAddress.size()]); // creating array of String type
List emailAddress=new ArrayList();//动态数组
...
while(rs.next()){
emailAddress.add((rs.getString(“emailAddress”));
...
}
返回emailAddress.toArray(新字符串[emailAddress.size()]);//创建字符串类型的数组
而ArrayList#toArray
则将列表
转换为数组
,该数组最后在代码中完成。如果您有ArrayList
,那么您就不再需要数组了,实际上ArrayList
是由数组本身及其动态大小支持的
List<String> emailAddress= new ArrayList<String>(); // dynamic array
...
while(rs.next()){
emailAddress.add((rs.getString("EmailAddress"));
...
}
return emailAddress.toArray(new String[emailAddress.size()]); // creating array of String type
List emailAddress=new ArrayList();//动态数组
...
while(rs.next()){
emailAddress.add((rs.getString(“emailAddress”));
...
}
返回emailAddress.toArray(新字符串[emailAddress.size()]);//创建字符串类型的数组
和ArrayList#toArray
将List
转换为Array
,这在代码中是最后完成的。您在代码中错误地使用了ArrayList
ArrayList<String> strArrEmailIds = new ArrayList<String>();
String[] emailAddress= new String[strArrEmailIds.size()];
strArrEmailIds.toArray(emailAddress);
您在代码中错误地使用了ArrayList
ArrayList<String> strArrEmailIds = new ArrayList<String>();
String[] emailAddress= new String[strArrEmailIds.size()];
strArrEmailIds.toArray(emailAddress);
至少我需要将其转换为字符串数组..我不需要返回值为ArrayListYou知道大小,请使用它。调用新字符串[0]{}
导致创建两个数组-一个是您传入的空数组,另一个是大小正确的数组。这有点浪费。消耗量太小,可以忽略。至少我需要将其转换为字符串数组..我不知道