JAVA
16일차//[java] 컬렉션 프레임워크 // ArrayList (1)
aesup
2021. 2. 2. 00:38
728x90
ArrayList
ArrayList는 크기를 미리 지정하지 않기 때문에 얼마든지 많은 수의 값을 저장할 수 있다.
ArrayList는 배열과는 사용방법이 조금 다르다.
ArrayList는 배열과는 사용방법이 조금 다르다. 배열의 경우 값의 개수를 구할 때 .length를 사용했지만 ArrayList는 메소드 size를 사용한다. 또한, 특정한 값을 가져올 때 배열은 [인덱스 번호]를 사용했지만 컬렉션은 .get(인덱스 번호)를 사용한다..
for(int i=0; i<al.size(); i++){
String val = al.get(i);
System.out.println(val);
}
위의 코드는 컴파일 오류가 발생한다. ArrayList의 메소드 add의 입장에서는 인자로 어떤 형태의 값이 올지 알 수 없다.
그렇기 때문에 모든 데이터 타입의 조상인 Object 형식으로 데이터를 받고 있다.
예를들면 아래와 같은 모습일 것이다. (실제와는 다르다)
public boolean add(Object e) {
따라서 ArrayList 내에서 add를 통해서 입력된 값은 Object의 데이터 타입을 가지고 있고,
get을 이용해서 이를 꺼내도 Object의 데이터 타입을 가지고 있게 된다.
그래서 위의 코드는 아래와 같이 바꿔야 한다.
for(int i=0; i<al.size(); i++){
String val = (String)al.get(i);
System.out.println(val);
}
get의 리턴값을 문자열로 형변환하고 있다. 원래의 데이터 타입이 된 것이다.
그런데 위의 방식은 예전의 방식이다. 이제는 아래와 같이 제네릭을 사용해야 한다.
ArrayList<String> al = new ArrayList<String>();
al.add("one");
al.add("two");
al.add("three");
for(int i=0; i<al.size(); i++){
String val = al.get(i);
System.out.println(val);
}
제네릭을 사용하면 ArrayList 내에서 사용할 데이터 타입을 인스턴스를 생성할 때 지정할 수 있기 때문에 데이터를 꺼낼 때(String val = al.get(i);) 형변환을 하지 않아도 된다.
MainClass
package main;
import java.util.ArrayList;
import myclass.MyClass;
public class MainClass {
public static void main(String[] args) {
/*
collection: 수집
List :
ArrayList:배열처럼 사용할 수 있는 리스트
선형구조 0-0-0-0
검색속도가 빠르다.
LinkedList
추가, 삭제 속도가 빠르다
ex) 실시간(게임)
Map :
HashMap
TreeMap
Set == 집합
*/
//
//
ArrayList<Integer> arrlist = new ArrayList<Integer>();
//추가
arrlist.add(111);
Integer in = new Integer(222);
arrlist.add(in);//뒤에다가 붙이는게 add
arrlist.add(new Integer(333));
int len = arrlist.size();
System.out.println("목록의 크기"+ len);
for (int i = 0; i < arrlist.size(); i++) {
System.out.println(arrlist.get(i));
//ArrayList.get()
// .get(int index)은 인자로 인덱스를 받습니다. 이 인덱스의 위치에 있는 객체를 리턴해줍니다.
}
//삭제
arrlist.remove(1);
len = arrlist.size();
System.out.println("목록의 크기"+ len);
//원하는 위치에 추가
Integer num = new Integer(200);
arrlist.add(1, num);
for(Integer n : arrlist) {
System.out.println(n);
}
//검색
int index = arrlist.indexOf(3363);
System.out.println(index);//인덱스 못찾으면 -1넘어온다
for (int i = 0; i < arrlist.size(); i++) {
Integer v = arrlist.get(i);
}
//수정
Integer uData = new Integer(555);
arrlist.set(2,uData);
for(Integer n : arrlist) {
System.out.println(n);
}
//MyClass(number, name, height)
//ArrayList<myClass>
//
//
ArrayList<MyClass> list = new ArrayList<MyClass>();
//List<MyClass> list = new ArrayList<MyClass>(); 이렇게 추가 가능
//추가
MyClass cls = new MyClass(1, "홍길동", 180);
list.add(cls);
list.add(new MyClass(1, "홍길동", 180));
list.set(1, new MyClass(4, "정수동", 180));
for (int i = 0; i < list.size(); i++) {
MyClass my = list.get(i);
System.out.println(my.toString());
}
//삭제
list.remove(1);
for (int i = 0; i < list.size(); i++) {
MyClass my = list.get(i);
System.out.println(my.toString());
}
//검색
String name = "홍길동";
for (int i = 0; i < list.size(); i++) {
MyClass my = list.get(i);
if(name.contentEquals(my.getName())) {
index = i;
break;
}
}
System.out.println("검색된 데이터 : " + list.get(index).toString() );
//수정
list.set(1, new MyClass(4, "정수동", 178));
//ArrayList<String> slist =
//추가
//삭제
//검색
//수정
//
//
ArrayList<String> slist = new ArrayList<String>();
//추가
slist.add("안녕하세요");
String in2 = new String("감사합니다");
slist.add(in2);
slist.add(new String("사랑합니다"));
int leng = slist.size();
System.out.println("leng 사이즈는 = " + leng);
for(int i = 0 ; i < slist.size(); i++) {
System.out.println(slist.get(i));
}
//삭제
slist.remove(1);// 감사합니다. 삭제
for(int i = 0 ; i < slist.size(); i++) {
System.out.println(slist.get(i));
}
}
}
Dto - MyClass
package dto;
public class MyClass {
private int number;
private String name;
private double height;
public MyClass() {
}
public MyClass(int number, String name, double height) {
super();
this.number = number;
this.name = name;
this.height = height;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
@Override
public String toString() {
return "MyClass [number=" + number + ", name=" + name + ", height=" + height + "]";
}
}
728x90