Search code examples
javatoarray

Java Object Array item to String Array


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;
}

Solution

  • 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()]);