[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 238
  • Last Modified:

array to arraylist

Hi,

I am working on below program

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Numbers {

public static void main(String[] args) { 


List<int[]> arrayList = new ArrayList<int[]>();

int[] srtArray = {1,2,3,100,201,730};

arrayList.add(srtArray) ; 

for (int i=0;i<arrayList.size();i++){
System.out.println(arrayList.get(i));
}	

}
}	

Open in new window


I got gibberish output like
[I@74497449


How do i get meaningful output.
Is this is not the way i add array to array list and then display?
Please advise
0
gudii9
Asked:
gudii9
  • 4
  • 3
  • 3
  • +1
3 Solutions
 
CEHJCommented:
System.out.println(java.util.Arrays.toString(arrayList.get(i)));

Open in new window


(arrays don't override Object.toString)
0
 
krakatoaCommented:
List<int[]> arrayList = new ArrayList<int[]>(); // declares an ArrayList of int arrays called arrayList

int[] srtArray = {1,2,3,100,201,730}; //declares and initialises an int array called srtArray

arrayList.add(srtArray) ; //adds the array srtArray to the arrayList

for (int i=0;i<arrayList.size();i++){
System.out.println(arrayList.get(i)); /* prints out the object reference for all objects in arrayList, of which there is only 1, namely srtArray. Hence your 'gobbledegook' object handle ref.*/
}
0
 
dpearsonCommented:
Also I'm guessing you don't really want a List of arrays:
    List<int[]> arrayList = new ArrayList<int[]>();

but a list of Integers:
    List<Integer> arrayList = new ArrayList<Integer>();

In which case your code should be:

List<Integer> arrayList = new ArrayList<Integer>();
int[] srtArray = {1,2,3,100,201,730};
for (int j = 0 ; j < srtArray.length ; j++) {
   arrayList.add(srtArray[j]) ;
}

The good news is that if you have a List<Integer> then you don't need to do this:
for (int j=0;j<arrayList.size();j++){
System.out.println(arrayList.get(j));
}

to print them out, you can just do this:

System.out.println(arrayList) ;

Doug
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
gudii9Author Commented:
The good news is that if you have a List<Integer> then you don't need to do this:
for (int j=0;j<arrayList.size();j++){
System.out.println(arrayList.get(j));
}

to print them out, you can just do this:

System.out.println(arrayList) ;

List<int> i am using is instead arraylist of primitive not wrapper type right?



for (int i=0;i<arrayList.size();i++){
System.out.println(arrayList.get(i)); /* prints out the object reference for all objects in arrayList, of which there is only 1, namely srtArray. Hence your 'gobbledegook' object handle ref.*/
}

Open in new window


why only one 1 reference for all bojcects in arraylist?

Does not it look the elements within the strArray list. please advise
0
 
krakatoaCommented:
why only one 1 reference for all bojcects in arraylist?

because you have only put one object in there.

viz :
arrayList.add(srtArray) ; //adds the array srtArray to the arrayList 

Open in new window


srtArray being the object.
0
 
CEHJCommented:
Does not it look the elements within the strArray list. please advise
No it doesn't, as i explained in my last comment. You have to use the method i posted
0
 
dpearsonCommented:
There's a big difference between this:
   List<int[]> arrayList = new ArrayList<int[]>();
where each element in the list is an array of items (very unusual to want this)

and this:
    List<Integer> arrayList = new ArrayList<Integer>();

where each element in the list is a single integer value (you almost certainly want this).
(You can'd do List<int> arrayList because Java doesn't allow it - so you do List<Integer> instead).

In either case, if you print out the elements of the list, it works by taking one element at a time and printing it.
If the element of the list is an "array of integers" then Java prints the gibberish output.

You can see the same gibberish if you just do this:
int[] srtArray = {1,2,3,100,201,730};
System.out.println(strArray) ;   // This is what is stored in the list and Java doesn't know how to print arrays

Almost certainly what you want is a List<Integer>.  Give the code I posted a try and see if it makes sense to you.  Pretty sure your original code is going down a dead end that will leave you very confused.

Doug
0
 
gudii9Author Commented:
(You can'd do List<int> arrayList because Java doesn't allow it - so you do List<Integer> instead).

i wonder why java does not allow. What is speciality of Integer compared to int. Is it is because int is not object type where as Integer is object type and list expects only object type but not primitive?
0
 
dpearsonCommented:
Is it is because int is not object type where as Integer is object type and list expects only object type but not primitive?

Yes that's exactly it.  A list has to be a list of objects.  It can't be a list of primitives.

Doug
0
 
CEHJCommented:
Correct
0
 
gudii9Author Commented:
I ran as below

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Numbers {

public static void main(String[] args) { 


List<int[]> arrayList = new ArrayList<int[]>();

int[] srtArray = {1,2,3,100,201,730};

arrayList.add(srtArray) ; 

for (int i=0;i<arrayList.size();i++){
//System.out.println(arrayList.get(i));
System.out.println(java.util.Arrays.toString(arrayList.get(i)));
}	

}
}	

Open in new window


I got output as
[1, 2, 3, 100, 201, 730]
0
 
krakatoaCommented:
I got output as
 [1, 2, 3, 100, 201, 730]

. . .  still not what you were expecting, then?
0
 
CEHJCommented:
:)
0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

  • 4
  • 3
  • 3
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now