- 최근에는 이것을 많이 쓴다. 벡터는 안 씀.
- 사용방법은 벡터와 비슷함.
- java.util.ArrayList를 import해야 함.
ArrayList 일반적인 예제
//ArrayList 생성
ArrayList<Object> list=new ArrayList<>();
//자료 추가
//사이즈(인덱스)는 자동으로 늘어남
list.add(“하나”);
list.add(2);
list.add(3.5);
list.add(false);
//3번 인덱스에 값(4) 추가
//그 뒤 자료는 자동적으로 한 칸씩 밀려남
list.add(3,4);
//삭제
list.remove(0)
//리스트.size() 데이터 개수
// 리스트.get(인덱스) 몇 번째 값
for(int i=0; I <list.size();i++){
System.out.println(v.get(i));
}
- 자료형을 섞어 썼기 때문에 Object 타입을 썻음.
- Integer, String, Double, Long 등으로 써도 됨.
클래스를 ArrayList의 자료형으로 쓴 예제
- 클래스를 자료형으로 쓰면 클래스의 다양한 자료형의 멤버변수를 쓸 수 있다.
public class Member{
private String userid;
private String passwd;
private String name;
private String tel;
private String email;
//getter, setter 생략
}
public class ListMember{
public static void main(String[] args){
ArrayList<Member> list=new ArrayList<>();
//멤버 객체 생성
Member m1=new Member();
//데이터 입력
m1.setName(“김철수”);
m1.setUserid(“kim”);
m1.setPasswd(“1234”);
m1.setTel(“02-999-8888”);
m1.setEmail(kim@gmail.com”);
//리스트에 멤버 추가
list.add(m1);
//멤버 객체 생성
Member m2=new Member();
//데이터 입력
m2.setName(“홍길동”);
m2.setUserid(“hong”);
m2.setPasswd(“2222”);
m2.setTel(“02-888-7777”);
m2.setEmail(hong@gmail.com”);
//리스트에 멤버 추가
list.add(m2);
//멤버 객체 생성
Member m3=new Member();
//데이터 입력
m3.setName(“조용필”);
m3.setUserid(“cho”);
m3.setPasswd(“3333”);
m3.setTel(“02-777-6666”);
m3.setEmail(cho@gmail.com”);
//리스트에 멤버 추가
list.add(m3);
System.out.println(“이름\t아이디\t비번\t전화번호\t\t이메일”);
for(int i=0; list.size(); i++){
Member m=list.get(i);
System.out.println(m.getName()+” \t” + m.getUserid()+” \t” +m.getPasswd()+” \t” +m.getTel()+” \t” +m.getEmail());
}
}
}
- List<Member> list=new ArrayList<>();
ArrayList의 부모클래스는 List이다.
따라서 위의 코드도 다형성 측면에서 가능하다.
실무에서는 위와 같은 코딩을 많이 한다.
이렇게 하면 벡터와 LinkedList도 처리가능하기 때문이다.
- List를 사용하려면 java.util.List를 import해야 함.
- 위의 예제처럼 ArrayList의 자료형에 클래스를 넣으면 다양한 형태의 자료형을 사용할 수 있다.
- 위 예제처럼 main에서 일일이 데이터를 입력하지 않고,
Member 클래스에 생성자를 만들어서 데이터를 입력하는 방법도 있다.
생성자 만드는 법
Member 클래스에서 우클릭> source > Generate Constructor using Fields... > 해당 멤버변수 선택 > generate
그러면 Member 클래스에 아래와 같은 생성자가 만들어진다.
public Member(String name,String userid, String passwd, String tel, String Email){
this.name = name;
this.userid = userid;
this.passwd = passwd;
this.tel = tel;
this.email = email;
}
에러 방지를 위해 기본생성자도 만들어준다.
public Member(){};
그리고 main 메소드의 코딩내용을 아래와 같이 바꿔준다.
Member m4=new Member
여기까지만 적고 ctl + space해서 해당 생성자를 선택한다.
그리고 양식에 맞게 데이터를 입력하면 된다.
Member m4=new Member(“안해요”,“ahn”,“5678”,“02-666-5555”,ahn@gmail.com);
list.add(m4);
toString 메소드의 오버라이딩
- System.out.println 메소드는 valueOf 메소드를 호출하고 valueOf 메소드는 최종적으로 toString메소드를 호출하여 Object 타입의 자료형을 getClass().getName()@주소값(헥사코드) 형태로 반환한다.
이 toString 메소드를 Member 클래스에서 오버라이딩 해보자.
빈 공간 우클릭 > source > generate toString()
써야 할 멤버변수를 선택하고 generate
@Override
public String toString(){
블라블라블라
}
- 이렇게 toString클래스를 활용하면 실무에서 큰 도움이 된다.
책 관리 예제는 동영상을 참조하세요!
Tip :
1. 향상된 for문
-JDK 1.5부터
for(개별값 : 집합값)
for(Member s : list)
-list객체의 값을 인덱스 0부터 차례차례 객체변수 s에 넣어서 반복문을 돌림.
2. java bean, DTO(데이터 전달 객체, Data Transfer Object), vo(Value Object), model class
- 위의 Member 클래스처럼 값을 저장하려는 목적으로 만든 클래스를 말함.
3. Scanner 클래스는 경고가 뜨더라도 close()를 하면 안된다.
에러난다.
'공부방 > 자바프로그래밍' 카테고리의 다른 글
List 구조 (0) | 2021.05.14 |
---|---|
자바 컬렉션(Collection) (0) | 2021.02.20 |
자바 일반화 (Generic, 제네릭) (0) | 2021.02.19 |
유용한 클래스들 – 래퍼(Wrapper) 클래스 (0) | 2021.02.02 |
자바 유용한 클래스들 – Math, Calendar, Arrays, Random 클래스 (0) | 2020.11.02 |
자바 유용한 클래스들 - String 클래스 (0) | 2020.10.08 |
자바 유용한 클래스들 - Object 클래스 (0) | 2020.09.22 |
자바 내부클래스 (0) | 2020.09.07 |
댓글