Say I have the following:
Class myclass
{
public string stra ="", strb = ""
myclass(String a, String b){stra=a;strb=b}
}
//then in the app I want to do:
myclass myclassinst1 = new myclass("blah","xxxx");
myclass myclassinst2 = new myclass("blah2","yyyy");
myclass myclassinst3 = new myclass("blah3","zzzz");
list <myclass> mylist = new ArrayList<myclass>();
mylist.add(myclassinst1 );
mylist.add(myclassinst2 );
mylist.add(myclassinst3 );
//How would I then convert that to a String[] Array of all the stra elements without using a loop.
//eg:
String[] strarr_a = mylist.toarray(myclass.stra);
String[] strarr_b = mylist.toarray(myclass.strb);
//instead of having to do
String[] strarr_a = new String[mylist.size()];
String[] strarr_b = new String[mylist.size()];
for (int i=0;i<mylist.size();i++)
{
strarr_a[i] = mylist.get(i).stra;
strarr_b[i] = mylist.get(i).strb;
}
There is no easy way to do this, for example with a standard Java API method. You will have to write the loop yourself.
Note that there are a number of errors in your code (missing semi-colons, misspelled class names such as string
and list
, and the keyword is class
, not Class
).
I'd write it something like this:
class MyClass {
// Note that it's bad practice to make fields public.
// Also, you do not need to initialize fields to "" if you're going to initialize them in the constructor.
private String stra;
private String strb;
public MyClass(String a, String b) {
this.stra = a;
this.strb = b;
}
public String getStra() {
return stra;
}
public String getStrb() {
return strb;
}
}
MyClass myclassinst1 = new MyClass("blah","xxxx");
MyClass myclassinst2 = new MyClass("blah2","yyyy");
MyClass myclassinst3 = new MyClass("blah3","zzzz");
List<MyClass> mylist = new ArrayList<MyClass>();
mylist.add(myclassinst1);
mylist.add(myclassinst2);
mylist.add(myclassinst3);
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
for (MyClass obj : mylist) {
list1.add(obj.getStra());
list2.add(obj.getStrb());
}
String[] strarrA = list1.toArray(new String[list1.size()]);
String[] strarrB = list2.toArray(new String[list2.size()]);