[JAVA #18] 배열(Array) 구현과 Arrays클래스

HJoo·2022년 12월 27일
0

TodayStudy

목록 보기
20/111
post-thumbnail

💡배열의 특징💡

  • 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조
  • 정해진 크기가 있음
  • 요소의 추가와 제거시 다른 요소들의 이동이 필요함
  • 배열의 i 번째 요소를 찾는 인덱스 연산이 빠름
  • jdk 클래스 : ArrayList, Vector

중간에 요소를 추가할 경우

  • 자료를 넣기 위해서는 그 인덱스의 자리가 비어있어야 한다
  • 그 자리를 비우려면 한 칸씩 뒤로 이동해야한다
  1. 넣고자하는 인덱스의 번호가 배열의 인덱스의 범위를 벗어날 경우 오류
if(position < 0 || position > count ){  //index error
            System.out.println("insert Error");
            return;
        }
  1. 배열이 꽉 찬 경우 추가할 수 없으니 오류
if(count >= ARRAY_SIZE){  //꽉 찬 경우
            System.out.println("not enough memory");
            return;
        }

---오류처리 끝---
3. 뒤에서부터 한 칸씩 뒤로 이동, 넣고자하는 인덱스까지 뒤로 이동시켜서 그 자리를 비운다

for( i = count-1; i >= position ; i--){
            intArr[i+1]  = intArr[i];        // 하나씩 이동
        }
  1. 인덱스의 자리가 비었으므로 그 자리에 넣고자 하는 값을 대입, 요소의 개수를 하나 증가
intArr[position] = num;
        count++;

중간의 요소를 삭제할 경우

  • 중간의 요소를 없애려면 그 인덱스의 자리를 기준으로 뒤의 요소들이 한 칸씩 앞으로 와야한다
  1. 배열이 비어있는 경우 삭제할 수 없으니 오류
if( isEmpty() ){
            System.out.println("There is no element");
            return ret;
        }
//isEmpty 메서드        
public boolean isEmpty()
    {
        if(count == 0){
            return true;
        }
        else return false;
    }
  1. 삭제하고자하는 인덱스의 번호가 배열의 인덱스의 범위를 벗어날 경우 오류
if(position < 0 || position > count-1 ){  //index error
            System.out.println("remove Error");
            return ret;
        }

---오류처리 끝---
3. 삭제할 요소를 반환할 값에 저장하고 for문을 돌며 뒤의 요소를 앞으로 가져온다

ret = intArr[position];
for(int i = position; i<count -1; i++ ){
    intArr[i] = intArr[i+1];
    }
count--;
return ret;

Arrays 클래스

  • 배열을 다루기 편리한 static 메서드를 제공하는 클래스

배열의 출력 - toString()

Arrays.toString(배열)

배열의 복사 - copyOf(), copyOfRange()

Arrays.copyOf(배열, 인덱스 0부터 가져올 개수);
Arrays.copyOfRange(배열, 인덱스 시작(from),(to));
//**from은 항상 범위에 들어가고 to는 범위에 안들어감** 주의

배열 채우기 - fill(), setAll()

Arrays.fill(배열, 채울 값)
Arrays.setAll(배열, 람다식[(i) -> ~~] )

배열의 정렬과 검색 - sort(), binarySearch()

  • binarySearch는 정렬(sort)되어있을 경우 올바른 결과가 나옴
Arrays.sort(배열);
int index = Arrays.binarySearch(배열, 2);
//2가 배열에서 어느 인덱스에 있는지

다차원 배열의 출력 - deepToString()

Arrays.deepToString(배열)

다차원 배열의 비교 - deepEquals()

Arrays.equals(배열1, 배열2)

배열을 List로 변환 - asList()

  • 읽기 전용이기 때문에 List 객체를 만든 후 값을 추가 (add)하려면 예외가 발생한다
  • asList로 list를 만든 후 다시 new ArrayList(list)로 ArrayList를 만들어야 추가할 수 있다
Arrays.asList(배열이나 배열 요소 나열)
//개수가 정해지지 않았음

람다와 스트림 관련 메서드 - parallelXXX(), spliterator(), stream()

profile
안녕하세요. Chat JooPT입니다.

0개의 댓글