Bible, Lee, Data
Faith, software, data, and everyday life.
JavaAll posts
[Java] File/Directory: Input/Output (IO)
자바 프로그램에서 외부의 파일을 접근하는 방법은 다음의 과정을 거친다. 먼저 외부 파일을 참조하는 참조 객체(대리자, 위임자)를 생성한다. 그리고 참조하는 객체를 조작한다. 그 행동의 결과가 외부 파일이 적용되는 작동 방식이다. 본문에서 다룰 텍스트 파일 또한 자바 프로그램의 외부 파일이다. 텍스트 파일을 바로 자바로 가져오려고 하면 난이도가 많이 올라가고 코드도 복잡해진다. 그래서 자바와 외부 파일을 이어주는 중개인을 만들고 시작하는 방식으로 작성하였다. 여기서 사용하는 파일 참조 클래스는 java.io.File에 속한 클래스이다. 💡File 조작 파일 데이터 확인 File file = new File("C:\\Class\\code\\java\\file\\data.txt"); System.out.pri..
[Java] Set Interface: HashSet Class
💡HashSet Class Set 인터페이스는 순서가 없는 데이터 집합으로, 요소를 구분하는 식별자가 없다는 특징이 있다. 방을 식별하는 번호나 식별자가 없다는 말은 똑같은 데이터가 2개 들어 있으면 데이터를 구분할 수 있는 방법이 없다는 의미이다. 따라서 Set은 데이터 중복을 허용하지 않는다. ArrayList 클래스와 비교해보며 HashSet의 특징을 알아보도록 하자! HashSet 클래스의 활용 HashSet 선언하기 // ArrayList list = new ArrayList(); HashSet set = new HashSet(); 요소 추가하기 // list.add("강아지"); // list.add("고양이"); // list.add("거북이"); set.add("강아지"); set.add(..
[Java] Requirements Q094: Bugles Class Design
📌Q094 Class package com.test.question.q94; import java.text.DecimalFormat; public class Q094 { public static void main(String[] args) { /* ● 요구사항 과자(Bugles) 클래스를 설계하시오. ● 조건 - Bugles 객체의 정보 - 가격, 용량, 생산일자, 유통기한 - 모든 멤버 변수의 접근 지정자는 private으로 한다. - 멤버 접근을 위한 Setter와 Getter를 정의한다. - 용량 : 쓰기 전용, 300g, 500g, 850g - 가격 : 읽기 전용, 850원(300g), 1200원(500g), 1950원(850g) - 생산일자 : 쓰기 전용(Calendar) - 남은유통기한 : 읽..
[Java] Requirements Q093: Note Class Design
📌Q093 Class package com.test.question.q93; public class Q093 { public static void main(String[] args) { /* ● 요구사항 Note 클래스를 설계하시오. ● 조건 - Note 객체의 정보 - 크기, 표지 색상, 페이지수, 소유자이름, 가격 - 모든 멤버 변수의 접근 지정자는 private으로 한다. - 멤버 접근을 위한 Setter와 Getter를 정의한다. - 크기 : 쓰기 전용, A3, A4, A5, B3, B4, B5 - 표지 색상 : 쓰기 전용, 검정색, 흰색, 노란색, 파란색 - 페이지수 : 쓰기 전용, 10 ~ 200페이지 이내 - (+) 10~50(얇다), 51 ~ 100(보통), 101 ~ 200(두껍다) - ..
[Java] Map Interface: HashMap Class
💡HashMap Class HashMap Class는 요소에 접근할 때 키(key)를 사용하는 방식이다. 이때 방 번호가 없다는 말은 순서가 없다는 뜻이기도 하다. 여기서 key는 강의실 5개가 있다고 할 때, 햇님반, 달님반, 별님반, 화성반, 지구반 각각의 이름을 말한다. 또한 각 개별적인 키(key)에는 값(value)이 부여된다. (ex 햇님반 10명) HashMap은 요소의 일괄 접근이 불가능해 반복문을 사용할 수 없지만, 이는 용도가 다를 뿐이지 좋고 나쁘다는 의미는 아니다. 이러한 HashMap의 특징으로 인해 요소끼리의 구분이 용이해졌다. 값을 확인하지 않더라도 식별자 key로 방의 의미를 알 수 있기 때문에 가독성이 굉장히 좋다. HashMap 클래스의 활용 HashMap 선언하기 Has..
[Java] List Interface: Stack Class, Queue Interface
💡Stack Class Stack 클래스는 한쪽이 막혀있는 파이프 구조를 떠올리면 된다. 후입선출 방식(LIFO, Last Input First Output)으로, 저장소에 나중에 들어간 요소가 가장 먼저 나온다. Stack을 활용한 예로는 되돌리기(Ctrl + Z), 다시하기(Ctrl + Y) 기능이 있다. 데이터를 넣을 때에는 Push Down, 데이터를 꺼낼 때에는 Pop Up이라는 표현을 쓴다. Stack 클래스의 활용 Stack 선언하기 Stack stack = new Stack(); 제네릭의 타입 변수를 사용하여 Stack 배열을 생성해준다. 요소 추가하기 T push(T value) stack.push("짜장면"); stack.push("짬뽕"); stack.push("볶음밥"); Stack..
[Java] List Interface: ArrayList Class
순수 배열과 ArrayList 클래스 모두 데이터 요소를 저장하고 관리할 때 사용한다. 순수 배열은 크기가 고정되어 있어 데이터의 추가에 제약이 있고 삭제가 불가능하지만, ArrayList 클래스는 배열의 한계를 해결하여 사용하기에 편리하다. 소스 코드를 살펴보며 ArrayList의 특징과 사용법, 주요 메서드를 알아보도록 하자! 💡순수 배열 // Create int[] num1 = new int[3]; num1[0] = 10; num1[1] = 20; num1[2] = 30; // Read System.out.println(num1[0]); System.out.println(num1[1]); System.out.println(num1[2]); System.out.println(num1.length); ..
[Java] 컬렉션 (Collection)
💡JCF, Java Collection Framework 컬렉션은 자료구조이자 무언가를 모아놓은 집합(배열)이며, 기존의 배열에서 향상된 배열을 의미한다. 기존의 순수 배열에서 사용법을 개량하거나 용도에 따른 입출력 방식 또는 효율성을 높였다는 특징이 있으며, 어떤 분야에서 배열을 특화시켰느냐에 따라 종류가 굉장히 많다. 또한 컬렉션은 클래스와 내부 순수 배열을 가지고 있으며, 길이가 가변적이어서 방의 개수를 마음대로 늘이고 줄이는게 가능하다는 장점이 있다. 컬렉션을 읽는 방법 - Array+ List - Linked+ List - Hash+ Map - Tree+ Map - Hash+ Set - Tree+ Set 앞에 단어는 물리 구조(메모리의 모양)를 나타내고, 뒤에 단어는 인터페이스(사용법)을 나타낸..