알고리즘 : 어떤 문제가 발생 되었을 때 해결할 수 있는 절차 혹은 순서
자료구조
의미 없는 내용들을 하나의 정보로 만들기 위함
의미 없는 데이터를 하나의 정보로 만들어주는 알고리즘들의 집합,
수집한 자료를 저장하는 방법.
컬렉션 프레임워크 (Collection Framework)는 자료구조에 해당됩니다.
이 컬렉션 프레임워크는 엄청 중요한데 어느정도 중요하냐고 하시면... 조금 과장을 더해 추상메소드부터 지금까지 배운것들을 모두 이 프레임워크를 위해 배웠다고 할 정도 일까요?ㅎㅎㅎ
<List extends Collection>
리스트는 인터페이스이며, 주로 사용하는 종류는 3가지입니다.
1. Vector : 보안성 강화, 처리량 감소, 용량 관리 필요
2. LinkedList : FILO으로 인해 넣을때는 빨라도 뺄때는 느리다
3. ArrayList : 인덱스로 데이터를 관리한다.
배열과 ArrayList의 차이
배열은 길이에 제한을 두어야 할 때 자주 사용되고, ArrayList는 몇 개의 데이터가 들어올 지 알 수 없을때 사용합니다.
<ArrayList>
컬렉션 클래스 중 실무에서 가장 많이 사용되는 클래스이며, 배열의 특징인 인덱스를 이용하여 값을 저장하고 관리합니다.
// ArrayList 선언 방식
ArrayList<Integer> datas = new ArrayList<>();
/*
* <?> : wpspflr <E> 클래스 타입으로 들어가야 합니다.
* 타입을 뭘로 할 지 모를때나
* 객체로 사용할 때 타입을 지정하는 기법입니다.
* 지정할 타입에 제한을 들수 있습니다.
*/
datas.add(10);
datas.add(20);
datas.add(90);
datas.add(40);
datas.add(50);
datas.add(60);
datas.add(70);
datas.add(80);
datas.add(30);
// collection
// add() - 리스트에 추가 (추가 방식이 여러개 있기 때문에 잘 확인해서 사용해야합니다.)
datas.add(10); // 리스트 맨마지막에 10이라는 숫자 추가
// set() - 리스트에 있는 요소 수정 (수정 방식이 여러개 있기 때문에 잘 확인해서 사용해야합니다.)
datas.set(3,9); // 인덱스가 3인곳을 숫자 9로 변경
// remove() - 리스트에 있는 요소 삭제 (삭제 방식이 여러개 있기 때문에 잘 확인해서 사용해야합니다.)
datas.remove(3); //인덱스가 3인 곳을 삭제
★Point! ArrayList는 배열처럼 중간을 지우면 붙여주는 과정이나, 배열길이에 맞게 입력하고, 인덱스로 조절하는 기능들이 자동으로 되어있어 많은 자료들을 처리할때 배열보다 편합니다.
<Set - HashSet>
- 구현 클래스
집합에서는 중복되는 원소를 포함할 수 없다.
저장된 값들은 인덱스가 없기 때문에 순서가 없다.
값의 유무 검사에 특화되어 있는 자료구조이다.
해시 코드로 유무 검사가 진행되고 속도가 상대적으로 좋다.
- 순서 부여 : iterator() -> 순서가 없는 것에 순서를 만들어 주는 것
순서가 없는 객체에 순서를 부여하거나, 순서가 있어도 iterator 방식의 순서로
변경하고자 할 때 사용한다.
hasNext()를 통해 다음 값이 있는 지 검사하고, next()를 사용하여 값을 가져온다.
public static void main(String[] args) {
HashSet<String> fruitSet = new HashSet<>();
// Set 데이터 넣기
fruitSet.add("자두");
fruitSet.add("수박");
fruitSet.add("딸기");
fruitSet.add("망고");
fruitSet.add("무화가");
fruitSet.add("납작복숭아");
// toString 재정의로 안에 들어있는 데이터가 출력
System.out.println(fruitSet);
// 데이터가 6개 들어있으므로 size()는 6
System.out.println(fruitSet.size());
fruitSet.add("납작복숭아");
System.out.println(fruitSet);
// 납작복숭아는 이미 들어있고, 중복을 허용하지 않는 Set이므로 사이즈는 계속 6
System.out.println(fruitSet.size());
// 중복데이터 출력
if(fruitSet.contains("납작복숭아")) {
System.out.println("중복데이터");
}
// Iterator로 Set에 순서를 넣어줌
Iterator<String> iter =fruitSet.iterator();
// 데이터가 있는지 확인
while(iter.hasNext()) {
// 데이터를 하나꺼내서 출력
System.out.println(iter.next());
}
}
<Map - hashMap>
- 서버 간 데이터 교환이 주 목적이 되는 기능
- Key와 Value 한 쌍으로 저장되며, 검색의 목적을 가지고 있다.
- Value 수정 가능, Key 수정 불가능
* Key로 Value를 검색한다.
* Key는 순서가 없고(Set), Value는 순서가 있다(Collection).
* Key가 중복되면 최근 넣었던 Value값으로 수정 된다.
* 한 쌍인 Entry는 순서가 없다.
* Value는 중복이 가능하다. Key는 중복이 불가능하다.
* HashTable을 통하여 검색된다.
public static void main(String[] args) {
// HashMap 선언
HashMap<String, Object> userMap = new HashMap<>();
// key, value의 쌍으로 데이터 입력
userMap.put("id", "nameline");
userMap.put("pw", "1234");
userMap.put("name", "닉네음");
userMap.put("age", 20);
// 들어있는 세트의 양으로 size()는 4
System.out.println(userMap.size());
// 키값으로 value를 가져옴
System.out.println(userMap.get("id"));
// toString 재정의로 안에 들어있는 내용들을 출력
System.out.println(userMap);
// set형식인 key값을 iterator를 사용하여 순서 생성
Iterator<Entry<String, Object>> iter =userMap.entrySet().iterator();
// set과 동일하게 값을 가져와 key와 value를 출력
while(iter.hasNext()) {
Entry<String, Object> entry = iter.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
+) JSON
* Key와 Value, 한 쌍으로 작성한다.
* Map 자료구조와 비슷하다.
* {}안에 데이터를 한 쌍씩 저장한다.
* 데이터 교환 형식이다.
* 외부 API를 사용해야 한다(json-simple)
'프로그래밍 공부 > Java' 카테고리의 다른 글
[lesson] Java 프로그래밍 언어 - 파일 입출력 (0) | 2021.08.11 |
---|---|
[lesson] Java 프로그래밍 언어 - 스레드(Thread) (0) | 2021.08.07 |
[lesson] Java 프로그래밍 언어 - Object , Wrapper Class (0) | 2021.07.30 |
[lesson] Java 프로그래밍 언어 - API (0) | 2021.07.30 |
[lesson] Java 프로그래밍 언어 - 예외 처리 (0) | 2021.07.29 |