본문 바로가기
CLASS/JAVA

#7-3 / LinkedList 클래스 배열

by hingu 2024. 5. 9.
⚡ LinkedList 클래스 배열
package oop;

import java.util.Arrays;
import java.util.LinkedList;

//LinkedList 클래스 배열
public class web5 {

	public static void main(String[] args) {
		Integer a[] = {1,3,5,7,9}; //원시배열
		
		//클래스 배열 선언
		LinkedList<Integer> ls = new LinkedList<Integer>(Arrays.asList(a));
		LinkedList<Integer> ls2 = new LinkedList<Integer>();
		
		ls2.add(10);
		ls2.add(20);
		ls2.add(30);
		
		//ArrayList에서도 가능
		ls2.add(2,50);
		ls2.remove(0);
		ls2.set(1, 500); //해당 배열 번호에 데이터를 수정,변경시
		
		//ArrayList에서 불가능
		ls2.push(100); //배열의 맨 앞에 값 넣기
		Integer aa = ls2.pop(); //배열의 0번째 값 출력후 배열에서 삭제
		Integer bb = ls2.peek(); //배열의 0번째 값 출력후 배열에 값 그대로 보관
	}
}

 

❗   ArrayList(순서를 유지하는 배열 형태),LinkedList(순방향 또는 역방향 검색) => List(부모 라이브러리)

 

❗  ArrayList는 없고 LinkedList에는 있는것

ls2.push(100); //배열의 맨 앞에 값 넣기

Integer aa = ls2.pop(); //배열의 0번째 값 출력후 배열에서 삭제
Integer bb = ls2.peek(); //배열의 0번째 값 출력후 배열에 값 그대로 보관

 

❗  ArrayList와 LinkedList의 데이터 속도 처리차이 

  • ArrayList : 순차적으로 데이터를 읽기 또는 쓰기 할경우 빠름
  • LinkedList : 이미 데이터가 있는 상황에서 추가로 데이터를 중간에 삽입할 경우 빠름 

 

⚡ LinkedList로 원시배열 가공하기
package oop;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;

//LinkedList로 원시배열 가공하기
public class web7 {
	public static void main(String[] args) {
		web7_box wb7 = new web7_box(); //즉시실행
	}
}

class web7_box {
	Scanner sc = new Scanner(System.in);
	public web7_box() { //즉시실행
		this.abc();//abc메소드 호출
	}
	
	public void abc() {
		//응용문제
		/*
		 사용자가 금액을 입력합니다.
		 단, 문자로 0을 입력시 반복문은 종료됩니다.
		 그 외의 입력되는 사항은 linkedList배열에 모두 기록되어야 합니다.
		 [결과]
		 " 금액을 입력하세요 : 5000"
		 " 금액을 입력하세요 : 6000"
		 " 금액을 입력하세요 : 15000"
		 " 금액을 입력하세요 : 0 " => 입력된 금액의 총 리스트 출력 [5000,6000,15000]
		*/
		
		LinkedList<String> ls = new LinkedList<String>();
		int f;
		for(f=0; ; f++) {
			System.out.println("금액을 입력하세요 : ");
			int answer = this.sc.nextInt();
			if(answer == 0) {
				break;
			}else {
				String answer_s = String.valueOf(answer);
				ls.add(answer_s);
				//ls.addFirst(answer_s); //node번호 첫번째에 삽입
				//ls.addLast(answer_s);	//node번호 마지막에 삽입
			}
		}
		System.out.println(ls);
		this.sc.close();
		System.exit(0); //프로세스 완져니 종료
	}
}
⚡ 상품별로 배열 변경 후 상품 검색(Scanner)
//{쿠첸,4인용,199500},{},{}.. 요렇게 출력후 상품 검색

package oop;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;

public class web7 {
	public static void main(String[] args) {
		web7_box wb7 = new web7_box(); //즉시실행
	}
}

class web7_box {
	String product[][] = null;
	Scanner sc = new Scanner(System.in);
	
	public web7_box() { //즉시실행
		this.product = new String[][]{
			{"쿠첸 브레인 IH 전기압력밥솥","누벨르 디지털 미니 전기밥솥","제니퍼룸 마카롱 전기밥솥 화이트","쿠쿠 트윈프레셔밥솥"},
			{"4인용","3~4인용","3인용","1~2인용"},
			{"199500","31650","357910","283000"}
		};
		this.bbb();
	}
	
	public void bbb() {
		//안에 ArrayList가 들어가기때문에 이건 에러
		//LinkedList<LinkedList<String>> ls = new LinkedList<LinkedList<String>>(); 
		LinkedList<ArrayList<String>> ls = new LinkedList<ArrayList<String>>(); 
		
		int f,ff;
		for(f=0; f<this.product[0].length; f++) { //4
			ArrayList<String> prd1 = new ArrayList<String>(); //1차
			for(ff=0; ff<this.product.length; ff++) { //3
				prd1.add(this.product[ff][f]);
			}
			ls.add(prd1);
		}
		//{쿠첸,4인용,199500},{},{}.. 이렇게 변경 완료
		
		System.out.println("상품명을 검색 하세요 : ");
		String search = this.sc.nextLine();
		
		int w=0;
		String msg = "";
		while(w<ls.size()) { //class배열은 length 아니고 size();
			//텍스트 일치여부 확인 indexOf(변수에 담아야함)
			//텍스트 한글자라도 포함되는 상품 모두 출력됨
			int chk = ls.get(w).get(0).indexOf(search); 
			if(chk >= 0) { //일치하는게 하나도 없다면 -1이 뜨므로 >=0
				System.out.println(ls.get(w).get(0) +"가격 : "+ ls.get(w).get(2));
			}else {
				System.out.println("해당상품은 없습니다요");
				break;
			}
			w++;
		}
		System.out.printf(msg);
		this.sc.close();	
	}
}

 

'CLASS > JAVA' 카테고리의 다른 글

#8 / remind1  (0) 2024.05.10
#7-4 / foreach,List배열  (0) 2024.05.09
#7-2 / getter,setter  (0) 2024.05.09
#7-1 / 주의  (0) 2024.05.09
#6-3 / 2차 class 배열  (0) 2024.05.08