13일...

고라파덕·2021년 3월 22일
0

JAVA

목록 보기
10/13
post-thumbnail

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와 유사한 기능)
VectorArrayList와의 차이점
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);//출력
}

0개의 댓글