JAVA
Access ArrayList from another class
seoca
2019. 8. 1. 07:39
When ArrayList is needed from another class, use get/set method to return the list
다른 class에 있는 ArrayList를 사용하고 싶을 때는 get/set 메서드를 이용해서 불러오면 된다.
Example code I
class 1
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
AnotherClass anotherClass = new AnotherClass();
anotherClass.addList();
ArrayList<Integer> list = anotherClass.getList();
Iterator<Integer> itr = list.iterator();
while (itr.hasNext()) {
Integer i = itr.next();
System.out.print(i + ", "); //1, 2, 3, 4,
}
}
}
|
class 2
import java.util.ArrayList;
public class AnotherClass {
ArrayList<Integer> list = new ArrayList<>();
public void addList() {
list.add(1);
list.add(2);
list.add(3);
list.add(4);
}
//setter
public void setList(ArrayList list) {
this.list = list;
}
//getter
public ArrayList getList() {
return list;
}
}
|
*static으로 선언하고 사용할 수도 있지만 너무 심한 static method는 oop과 반대되기에 지양되어야 한다.
Example code II
The code below reads a CSV file and prints ArrayList from another class
CSV file 을 읽어서 ArrayList에 저장한 다음에 Main class에서 저장한 list를 출력하는 예제
//CSV File
Id,name,phone,email,account_num,address
1,Mr. D,345-234-2346,tomo@gmail.com,94837,Toronto CA
2,Mrs. P,847-835-3343,summer@gmail.com,98427,Vancouver CA
3,Mrs. C,938-656-6640,siw0911@yahoo.com,93247,Alberta CA
4,Mr. S,324-345-5531,suh@gmail.com,93442,Toronto CA
//Main class
public class Main {
public static void main(String[] args) {
CustomManager manager = CustomManager.createCustomManager();
try {
manager.readFile("customList.csv");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
/////////////// 다른 class 에서 data 가지고 오기 //////////////////////
ArrayList<CustomInfo> list = manager.getList();
System.out.println(list.get(0)); //1,Mr. D,345-234-2346,tomo@gmail.com,94837,Toronto CA
}
}
//Another Class
package customList;
import java.io.BufferedReader;
import java.io.*;
import java.util.ArrayList;
public class CustomManager {
//ArrayList
ArrayList<CustomInfo> customManagers = new ArrayList<>();
//Singleton pattern
static CustomManager inst = null;
private CustomManager(){}
public static CustomManager createCustomManager(){
if(inst == null)
inst = new CustomManager();
return inst;
}
public void readFile(String csv) throws FileNotFoundException {
BufferedReader csvFile = new BufferedReader(new FileReader("src" + File.separator + csv));
try {
String file = csvFile.readLine(); //to skip the first line
while((file = csvFile.readLine()) != null){
String[] data = file.split(",");
//adding to ArrayList
customManagers.add(new CustomInfo(Integer.parseInt(data[0]),data[1],data[2],data[3],data[4],data[5]));
}
} catch (IOException e) {
e.printStackTrace();
}
for (CustomInfo c : customManagers) {
System.out.println(c.toString());
}
}
public ArrayList<CustomInfo> getList(){
return customManagers;
}
}
|
Reference
https://stackoverflow.com/questions/39989988/access-arraylist-from-another-class