자바기초(ArraySort)

bitna's study note·2022년 5월 4일
0

자바

목록 보기
67/119

5월 3일 내용정리

1.Arrays.sort(): 기본타입, String형은 자동으로 오름차순으로 정렬해줌
사용자가 정의한 클래스타입을 쓰는 경우 클래스가 Comparable 인터페이스를 구현해야 정렬할수 있음

2.배열검색:배열항목들 중에서 찾으려는 값이 있는 위치인덱스 구하는방법
검색하기전에 반드시 오름차순정렬Arrays.sort()한 후 검색이 가능하다.
Arrays.binarySearch(항목들이 들어있는 배열,찾을값(항목))를 활용

package study_0503;
import java.util.Arrays;
import java.util.Collection;



public class ArraySort {

	public static void main(String[] args) {
		
		
		//숫자정렬
		int [] iArray = {85,95,23,76,10};
		Arrays.sort(iArray); //오름차순
		
		for(int i=0;i<iArray.length;i++) {
			System.out.print(iArray[i]+	",");
		}
		
		//문자열 정렬
		String[]name= {"홍길동","김바다","이하늘","박자바"};
		Arrays.sort(name);
		for(int i=0;i<name.length;i++) {
			System.out.print(name[i]+	",");
		}
		
		//클래스타입 정렬
		Member m1 =new Member("김자바");
		Member m2 =new Member("이자바");
		Member m3 =new Member("강자바");
		Member m4 =new Member("최자바");
		
		Member[] member4= {m1,m2,m3,m4};
		Arrays.sort(member4);
		for(int i=0;i<member4.length;i++) {
			System.out.println(member4[i]);
		}
		
		
		int index =Arrays.binarySearch(iArray,23);
		System.out.println(index);
		
		int index01 =Arrays.binarySearch(name,"이하늘");
		System.out.println(index01);
		
		int index02 =Arrays.binarySearch(member4,m1);
		System.out.println(index02);

	}

}

3.Arrays.sort() 사용전 Comparable 사용
Comparable은 인터페이스를 상속받아서 사용 한다.

Comparable<지네릭스, 타입을써줌>

Comparable 인터페이스에 있던 추상클래스 compareTo를 재정의 해줘야 한다.
내값 compareTo (비교값) 값이 같으면 '0',
내값이 사전순으로 앞에 있으면 -1,
내값이 사전순으로 뒤에 있으면 1,

package study_0503;

public class Member implements Comparable<Member> { 

	String name;  
    
	public Member(String name){
		this.name=name;
	}
	
	

	@Override
	public int compareTo(Member o) {
		return name.compareTo (o.name);
	}
	
	
}

4.boolean equals는 재정의가 안되어 있어서 "==" 와 동일
주소가 같은지 물어봄

5.배열복사
copyOf(원본배열, 복사할 길이-1)
copyOfRange(원본배열, 시작인덱스, 끝인덱스)
System.arraycopy(원본배열, 원본의 시작인덱스, 복사할 배열, 복사할 시작인덱스,복사의개수)
주소값만 복사해가는것을 얕은복사라고 한다.
내용까지 싹다 복사해서 새로 주소를 파서 알려주는걸 깊은복사 라고 한다.

6.1차 배열의 항목을 비교-equals():1차 항목의 값만 비교
2차 배열의 항목을 비교deepEquals():중첩된 배열의 항목까지 비교

package study_0503;
import java.util.Arrays;

public class ArraysTest {

	public static void main(String[] args) {
		
		char[]arr1= {'j','a','v','a'};
		
		//copyOf(원본배열, 복사할 길이-1) 이용
		char[]arr2=Arrays.copyOf(arr1,3);
		char[]arr3=Arrays.copyOf(arr1,arr1.length);
		
		
		//얕은복사->주소값만 복사
		int[][] originArr= {{1,2},{3,4}};
		int[][] cloneArr=Arrays.copyOf(originArr,originArr.length);
		System.out.println(Arrays.equals(originArr, cloneArr)); //1차배열 항목값비교
		System.out.println(Arrays.deepEquals(originArr, cloneArr));//2차배열 항목값비교		

	}	
}
profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글