13일...
ArrayList
객체를 배열처럼 관리하기 위한 클래스, 배열은 사이즈가 고정되어 있지만 ArrayList
는 객체의 크기만큼 사이즈가 조절된다.
//주요메소드
public boolean add(E e) //요소를 추가
public E get(int index) //index의 요소를 리턴
public E remove //index의 요소를 삭제
public E set(int index, E element) //index위치의 요소를 element 객체로 변경
public int size() // ArrayList에 담긴 요소의 갯수를 리턴
예1)
Scanner scan = new Scanner(System.in);
ArrayList list = new ArrayList();
for(;;){//무한 루프
System.out.println("학생 이름 입력");
String name = scan.next();
list.add(name); //name을 list에 추가
if(name.equals("출력")) break; //name에 출력을 입력하면 "입력된 학생이름"으로 탈출
if(name.equals("exid")){ // name exid을 입력하면 종료됨
return;
}
}
System.out.println("입력된 학생이름");
for(int i=0; i<list.size(); i++){
String z = (String)list.get(i);//부모클래스를 호출해야하기 때문에String으로 형변환으로 한뒤 출력한다.
System.out.ptintln(z);
예2)
//Member클래스가 만들어져있음을 가정
ArrayList list = new ArrayList();
Member m = new Member("test","1234");//파라미터에 값 저장
Member m1 = new Member("admin","4567");
Member m2 = new Member("user","0000");
//list.add(new Member("user","0000")) 이렇게 바꿀수 있다.
list.add(m);//list 추가
list.add(m1);
list.add(m2);
System.out.println("전체 출력");
for(int i=0; i<list.size(); i++{ //반복문을 사용해서 Member의 파라미터값을 list.get에 저장
Member m3 =(Member) list.get(i) //index의 값을 리턴해주고 형변환을 해서 호출해주어야한다
System.out.println("ID:"+m.getId() +",PW:"+m.getPw());
}
Generic
자료구조관련 클래스(ArrayList
, Vector
, ...
)에 특정 클래스만 저장할 수 있도록 설정한것
컬렉션클래스에 실수로 다른클래스 타입이 저장됨을 방지하기 위해 사용한다.
저장된 요소를 꺼내올때 형변환을 하지 않아도 된다.
형식-> 클래스 명 <저장할 클래스 타입> 객체명 = new 클래스명 <저장할 클래스 타입>();
예1)
ArrayList<Member> list= new ArrayList<Member>();//ArrayList에는 String객체만을 저장할 수 있다.
list.add("java");
list.add("jsp");
list.add("html");
list.add(new integer("100")); -->컴파일시 에러가 난다.
for(int i=0; i<list.size(); i++){
String o = list.get(i);//Generic은 <>에 클래스명이 들어가있기 때문에 형변환을 안해도 된다.
System.out.println(o.toUpperCase());//list값을 대문자로 바꿔서 출력해준다.
}
예2)
System.out.println("학생번호를 입력하세요")
int n = scan.nextInt();
boolean find = false; //if문을 탈출하기 위해 사용한다.
for(int i=0; i<list.size(); i++){
Student s = list.get(i); // 리턴값을 s에 저장
if(n==s.setnum()){ 입력한 n값이 클래스메소드의 저장된 값과 같으면 아래를 출력
System.out.println("학생번호:" + setnum());
System.out.println("이름:" + setname());
System.out.println("전화번호:" + setphone());
find = true;//if문 탈출
}
}
if(!find){
System.out.println("정보가 없습니다."); //값이 없는경우
}
System.out.println("삭제할 정보 입력");
n = scan.nextInt();
for(int i=0; i<list.size(); i++){
Student s = list.get(i);
}if(n==s.setnum()){
Student s1 = list.remove(i);//입력한 값을 삭제한다.
System.out.println("삭제된 정보:"+s1)
}
}
Vecvor
객체를 배열처럼 관리해 주는 클래스(ArrayList
와 유사한 기능)
Vector
와ArrayList
와의 차이점
1.Vector
클래는 스레드의 동기화를 지원한다. -> 멀티스레드 환경에서는 안전하게 사용할 수 있으나 많은 자원을 소모하여 무겁다.
2.ArrayList
는 스레드의 동기화를 지원하지 않는다. -> 멀티스레드 환경이 아니라면 ArrayList
를 사용하느것이 효율적이다.(가볍고 메모리를 적게 사용한다.)
예1)
Vector<String> vec = new Vector<String>();//클래스명과 타입을 선언
vec.add("일길동");
vec.add("이길동");
vec.add("삼길동");
vec.add("사길동");
vec.add("오길동");
for(int i=0; i<vec.size();i++){
System.out.println(vec.get(i)); .get(i) 리턴한 값을 출력
}
HashSet
Set
클래스의 특징
1. 값을 저장하는데 순서가 없다.
2. 중복값을 허용하지 않는다.(중복값이 있으면 겹쳐서 출력함)
List
클래스의 특징
1. 값을 저장할 때 순서가 있다.
2. 중복된 값을 저장할 수 있다
예1)
HashSet <String> hs = new hashSet<String>();
hs.add("아이패드");
hs.add("아이폰");
hs.add("맥북");
Iterator<String> a=hs.iterator();//요소를 순차적으로 꺼내오는 기능의 객체이다. 클래스명도 Iterator이다.
while(a.hasNext()){ //다음 요소로 리턴한다.
String s = a.next();//리턴값들을s에 저장
System.out.println(s);//출력
}
Author And Source
이 문제에 관하여(13일...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rkdehdgur777/13일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)