在另一种方法中获取 arraylist 值
get arraylist values in another method
这是我第一次在 java 中使用集合,在这里我几乎不需要任何指导就可以用另一种方法检索组合的 arraylist 对象。
//第一个方法getData()
while(rs.next())
{
fetchValue=new NewClass();
fetchValue.setCount(rs.getInt(1));
fetchValue.setIp(rs.getString(2));
data.add(fetchValue);
}
return data;
//第二种方法get2Data()
while(rs.next())
{
fetchValue1=new NewClass();
fetchValue1.setCount(rs.getInt(1));
fetchValue1.setIp(rs.getString(2));
data1.add(fetchValue1);
//System.out.println(data1);
}
return data1;
//第三种方法printValue()
Query_One printValue=new Query_One();
printValue.get2Data();
printValue.getData();
List arr=new ArrayList();
arr.add(data);
arr.add(data1);
//i was trying following method but it doesn't working..
//for(int i=0;i<arr.size();i++)
//{
//System.out.println(arr.get(i).getCount());
//}
这里如何获取 Count 和 Ip 值?而且..我写的代码正确吗?
请帮助我。
Java 中的集合有一个所谓的泛型来确定您可以对集合所持有的对象调用哪些方法。在你的案例中,你得到标准 class 作为泛型,它将是对象(所有 classes 除了原始数据类型从这个 class 扩展)所以你只能调用标准方法,例如 toString( ) 或等于 ()。您应该将 List 的 Generic 设置为您的 NewClass,它看起来像这样:
List<NewClass> myList = new ArrayList();//After Java 1.7 with Diamond interface (no brackets at the construction)
List<NewClass> myList = new ArrayList<NewClass>();//Pre Java 1.7 without Diamond interface
希望对您有所帮助:)
编辑:为了让它更容易一些并且没有索引,您还可以使用这样的 for-each 循环:
for(NewClass arrObject : arr){
System.out.println(arrObject.getCount());
}
在您的代码中,您试图访问 arr.get(i) 上的 getCount() 方法,但 arr.get(i) 基本上返回一个对象。所以你必须按如下方式将它转换为 NewClass
for(int i=0;i<arr.size();i++)
{
System.out.println(((NewClass)arr.get(i)).getCount());
}
然后您可以访问它的 getCount() 方法,因为它现在将在 NewClass 上调用,而不是在 Object 上调用。
如果您在另一个列表中添加列表,您应该使用addAll
。
add
是在列表对象中添加单个对象。
更改以下代码,
arr.add(data);
arr.add(data1);
到
arr.addAll(data);
arr.addAll(data1);
这是我第一次在 java 中使用集合,在这里我几乎不需要任何指导就可以用另一种方法检索组合的 arraylist 对象。
//第一个方法getData()
while(rs.next())
{
fetchValue=new NewClass();
fetchValue.setCount(rs.getInt(1));
fetchValue.setIp(rs.getString(2));
data.add(fetchValue);
}
return data;
//第二种方法get2Data()
while(rs.next())
{
fetchValue1=new NewClass();
fetchValue1.setCount(rs.getInt(1));
fetchValue1.setIp(rs.getString(2));
data1.add(fetchValue1);
//System.out.println(data1);
}
return data1;
//第三种方法printValue()
Query_One printValue=new Query_One();
printValue.get2Data();
printValue.getData();
List arr=new ArrayList();
arr.add(data);
arr.add(data1);
//i was trying following method but it doesn't working..
//for(int i=0;i<arr.size();i++)
//{
//System.out.println(arr.get(i).getCount());
//}
这里如何获取 Count 和 Ip 值?而且..我写的代码正确吗? 请帮助我。
Java 中的集合有一个所谓的泛型来确定您可以对集合所持有的对象调用哪些方法。在你的案例中,你得到标准 class 作为泛型,它将是对象(所有 classes 除了原始数据类型从这个 class 扩展)所以你只能调用标准方法,例如 toString( ) 或等于 ()。您应该将 List 的 Generic 设置为您的 NewClass,它看起来像这样:
List<NewClass> myList = new ArrayList();//After Java 1.7 with Diamond interface (no brackets at the construction)
List<NewClass> myList = new ArrayList<NewClass>();//Pre Java 1.7 without Diamond interface
希望对您有所帮助:)
编辑:为了让它更容易一些并且没有索引,您还可以使用这样的 for-each 循环:
for(NewClass arrObject : arr){
System.out.println(arrObject.getCount());
}
在您的代码中,您试图访问 arr.get(i) 上的 getCount() 方法,但 arr.get(i) 基本上返回一个对象。所以你必须按如下方式将它转换为 NewClass
for(int i=0;i<arr.size();i++)
{
System.out.println(((NewClass)arr.get(i)).getCount());
}
然后您可以访问它的 getCount() 方法,因为它现在将在 NewClass 上调用,而不是在 Object 上调用。
如果您在另一个列表中添加列表,您应该使用addAll
。
add
是在列表对象中添加单个对象。
更改以下代码,
arr.add(data);
arr.add(data1);
到
arr.addAll(data);
arr.addAll(data1);