자바 배열

최지혜·2022년 11월 3일
0

java

목록 보기
8/33

배열

List를 정렬할 때는 Collection.sort()
배열을 정렬할 때는 Arrays.sort()

HashSet

HashSet<데이터타입> 변수명 = new HashSet<데이터타입>();
Set 인터페이스에서 지원하는 구현 클래스
순서 X, 일정하게 유지 X
중복 허용 X

  • 하나의 객체를 가져오고 싶을 경우 Iterator를 사용
  • 원하는 값을 검색하는 경우 contains(value) : 값이 존재한다면 true, 값이 없다면 false

Stream

stream은 데이터의 흐름. 배열이나 컬렉션에 함수 여러 개를 조합해서 결과 얻을 수 있음!

  • mapToInt
    stream에서 sum()을 사용하려면 IntStream, LongStream, DoubleStream 와 같은 기본형 (Primitive Type) 특화 스트림을 사용해야 함.
    -> mapToInt, mapToLong, mapToDouble 같은 메소드로 스트림을 변환시키고 사용
  • map()
    스트림 내의 요소들을 하나씩 특정 값으로 변환. 이 때, 값 변환 위한 람다 입력 받음.
  • Collectors.toList(): map()에서 작업된 요소들을 가져온 후 -> 리스트로 결과를 가져온다.

-사용법 예시

List<MemberDto> collect = new ArrayList<MemberDto>();
for(Member member : findMembers){
	collect.add(new MemberDto(member.getName()));
    }

List<MemberDto> collect = findMembers.stream()
		.map(m -> new MemberDto(m.getName()))
        .collect(Collectors.toList());

랑 같음!

ArrayList / LinkedList

1.

int[] numbers = {10,20,30,40,50};
이런 배열은 갯수가 정해져 있고, 추가 삭제가 어렵고 직접 구현해야 한다.
그래서 우린!
ArrayList / LinkedList 를 사용함.
(크기를 동적으로 늘릴 수 있다!)

2.

ArrayList: 내부 배열에 객체를 저장해서 인덱스로 관리
장점: 인덱스를 이용해서 데이터를 가져오는 것 유용
단점: 데이터의 추가와 삭제가 느리다.
(데이터를 리스트의 처음이나 중간에 저장하면, 이후의 데이터들이 한칸씩 뒤로 물러나야한다.)
LinkedList: List 구현 클래스
인접 참조를 링크해서 체인처럼 관리
제거되는 인덱스의 앞 뒤 링크만 변경되고 나머지 링크는 변경되지 않음
-> 데이터의 추가/삭제가 빈번하다면 유리!

3.

Arrays 클래스의 정적 메서드 asList()
고정된 객체들로 구성된 List를 생성하는 방법
List<String> list = Arrays.asList("hello", "gglee", "java");

Vector 클래스

ArrayList와 동일한 내부 구조(저장할 타입을 지정해야 함)
차이점은 Vector 클래스는 동기화된(synchronized) 메서드로 구성!
그래서 멀티 스레드 환경에서 안전하게 객체 추가, 삭제 가능 -> 스레드에 안전
그러나, 동기화 때문에 속도는 느림. (안전성 추구, 속도 포기)

// String 객체를 관리하는 Vector 객체 생성
List<String> list = new Vector<>();

// 객체 추가
list.add("hello");

// 객체 제거
list.remove(0);
profile
매일 성장하는 개발자

0개의 댓글