JAVA 10강_2_Collection (★★★List계열★★★ - integer 객체, LikendList, ArrayList)

열라뽕따히·2024년 2월 29일
0

JAVA

목록 보기
64/79

Interator 객체

  • 원래 의미는 무엇인가 많이 모여 있는 것들을 순서대로 지정하면서 전체를 검색하여 처리를 실행하는 객체
  • 단어의 뜻은 '반복하다' 라는 의미
    ==> 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 데이터들을 읽어 오는 방법을 표준화 해놓은 객체

※ 주요 메서드 : hasNext( ) / next( )

hasNext( )

  • 반복하면서 읽어올 데이터가 있는지 확인하는 메서드
  • boolean형으로 반환이 됨
  • 다음에 읽어올 데이터가 있으면 true 값을 반환, 읽어올 데이터가 없으면 false 값을 반환

next( )

  • 데이터를 가져오는 메서드
  • next() 메서드를 호출했을 때 정확하게 다음 요소를 반환하도록 내부 상태를 다음으로 진행시켜 두는 역할이 숨어 있음



=============================코드=============================

// Integer를 타입을 갖는 List 계열 객체 생성
  List<Integer> list = new ArrayList<>();
		
	list.add(100);
	list.add(200);
	list.add(300);
	list.add(400);
	list.add(500);
    
    Iterator<Integer> it = list.iterator();
    
    while(it.hasNext()) {  // 다음에 읽어올 데이터가 있다면 다음 값을 가져와라!
			System.out.println(it.next());
	}

=============================실행=============================






LinkedList

: List 인터페이스의 자식 클래스 중 한 종류

  • 특징
    • 인접 참조를 링크해서 체인처럼 관리함
    • 특정 인덱스에서 객체를 제거하거나 객체를 추가하게 되면 앞 뒤의 링크만 연결하면 되는 구조
    • 빈번하게 삽입과 삭제가 일어나는 곳에서는 ArrayList 보다 더 큰 성능을 발휘함
      (단, 중간에 삽입과 삭제가 일어나는 경우)




LinkedList와 ArrayList의 데이터 추가하는데 걸리는 시간을 화면에 출력하여 비교해보자



=============================코드=============================

  // Integer를 타입을 갖는 List 계열 객체 생성
      List<Integer> list1 = new ArrayList<>();
		
	  List<Integer> list2 = new LinkedList<>();
		
	  long start, end;
		
	// 1. ArrayList로 중간에 데이터를 추가하는데 걸리는 시간
		start = System.nanoTime();  // nanoTime은 long타입
		
		for(int i = 0; i < 10000; i++) {
			list1.add(0, i);
		}
		
		end = System.nanoTime();
		
		System.out.println("ArrayList로 추가하는데 걸린 시간 >>> " + (end-start) + "ns");
		
		
	// 2. LinkedList로 중간에 데이터를 추가하는데 걸리는 시간
		
		start = System.nanoTime();  // nanoTime은 long타입
		
		for(int i = 0; i < 10000; i++) {
			list2.add(0, i);
		}
		
		end = System.nanoTime();
		
		System.out.println("LinkedList로 추가하는데 걸린 시간 >>> " + (end-start) + "ns");

=============================실행=============================






예시1)
키보드로 회원 수만큼 회원 정보를 입력 받고 member클래스를 타입으로 지정하여 객체를 생성한 뒤 ArrayList에 저장하고 저장한 회원 정보를 화면에 출력해보자


member 클래스

=============================코드=============================

public class Member {
	
	// 멤버변수
	private String id;
	private String pwd;
	private String name;
	private String age;
	private String phone;
	private String addr;
	
	public Member() { }  // 기본 생성자
	
	public Member(String id, String pwd, String name, String age, String phone, String addr) {
		this.id = id;
		this.pwd = pwd;
		this.name = name;
		this.age = age;
		this.phone = phone;
		this.addr = addr;
	}  // 인자 생성자
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	
}

member 클래스를 활용하여 회원 정보를 출력해보자

=============================코드=============================

    Scanner sc = new Scanner(System.in);
		
	System.out.print("회원 수를 입력하세요 : ");
		
	int memberCount = sc.nextInt();
		
	sc.nextLine();
		
		List<Member> list = new ArrayList<>();
		
  // 1. 키보드로 회원 수 만큼 회원 정보를 입력 받아서 ArrayList에 저장해보자
		
		for(int i = 0; i < memberCount; i++) {
			System.out.println((i+1) + "번째 회원의 아이디, 비밀번호, 이름, 나이, 연락처, 주소를 입력하세요");
			
			Member member = new Member(sc.nextLine(), sc.nextLine(), sc.nextLine(), 
            sc.nextLine(), sc.nextLine(), sc.nextLine());
			
			list.add(member);
		}
		
  // 2. 회원 정보를 ArrayList에서 가져와서 화면에 출력해보자
		for(int i = 0; i < list.size(); i++) {
			Member dto = list.get(i);
			
			System.out.println(dto.getId() + "\t" + dto.getPwd() + "\t" + dto.getName() + "\t" 
			                   + dto.getAge() + "\t" + dto.getPhone() + "\t" + dto.getAddr());
			
			System.out.println(":::::::::::::::::::::::::::::::::::::::::::::");
		}
		
		sc.close();

=============================실행=============================



예시2)
Student 객체를 만들어서 키보드로 학생 수를 입력 받고, 입력 받은 학생 수 만큼 학생의 정보를 입력 받아서 ArrayList에 저장 후 화면에 출력하세요
(조건 - 학생정보는 학번, 이름, 학과, 연락처, 주소)


student 클래스


=============================코드=============================

public class Student {
	
	String hakbun;
	String name;
	String major;
	String phone;
	String addr;

	public String getHakbun() {
		return hakbun;
	}

	public void setHakbun(String hakbun) {
		this.hakbun = hakbun;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getMajor() {
		return major;
	}

	public void setMajor(String major) {
		this.major = major;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public Student() { }
	
	public Student(String hakbun, String name, String major, String phone, String addr) { 
		this.hakbun = hakbun;
		this.name = name;
		this.major = major;
		this.phone = phone;
		this.addr = addr;
	}
	
}

student 클래스를 활용하여 회원 정보를 출력해보자


=============================코드=============================

    Scanner sc = new Scanner(System.in);
		
	List<Student> st = new ArrayList<>();
		
	System.out.print("학생 수를 입력하세요 : ");
	int su = sc.nextInt();
		
	sc.nextLine();
		
 // 1. 키보드로 입력 받은 학생 수 만큼의 학생 정보를 키보드로 입력을 받아서 ArrayList에 저장하자
		for(int i = 0; i < su; i++) {
			System.out.println("학생의 학번, 이름, 학과, 연락처, 주소를 입력하세요");
			//Student student = new Student(sc.nextLine(), sc.nextLine(), sc.nextLine(), sc.nextLine(), sc.nextLine());
			
			System.out.println("======================================");
			
 // 한번에 처리도 가능
			st.add(new Student(sc.nextLine(), sc.nextLine(), sc.nextLine(), sc.nextLine(), sc.nextLine())); 
		}
		System.out.println();
		
 // 2. ArrayList에 저장된 학생의 정보를 화면에 출력해보자
		for(int i = 0; i < st.size(); i++) {
			Student stu = st.get(i);  // st.get(i)는 주소값을 의미
			System.out.println("학번 : " + stu.getHakbun());
			System.out.println("이름 : " + stu.getName());
			System.out.println("학과 : " + stu.getMajor());
			System.out.println("연락처 : " + stu.getPhone());
			System.out.println("주소 : " + stu.getAddr());
			System.out.println("::::::::::::::::::::::::::::::::::::");
		}
		
		sc.close();

=============================실행=============================

0개의 댓글