언어/Java
Arrays 클래스
코딩은 내 밥줄
2023. 1. 21. 01:57
Arrays.copyof
: 새로운 배열을 생성하여 복사한다
import java.util.Arrays;
public class Arrays_Copy {
public static void main(String[] args){
String[] arOrg = {"hello","world","apple"};
String[] arCpy = Arrays.copyOf(arOrg,arOrg.length); // 전체 복사
for(String d : arCpy)
System.out.println(d+"\t");
}
}
Arrays.equals
: 두 배열의 내용이 같을 때 true 반환
import java.util.Arrays;
public class Array_Eq {
public static void main(String[] args){
int[] ar1 = {1,2,3,4};
int[] ar2 = Arrays.copyOf(ar1,ar1.length);
System.out.println(Arrays.equals(ar1,ar2));
}
}
객체로 생성된 배열 비교
import java.util.Arrays;
class Num{
private int num;
public Num(int num){
this.num = num;
}
public void showInfo() {
System.out.println(num);
}
}
public class ArrayObjEq {
public static void main(String[] args){
Num[] ar1 = new Num[3];
Num[] ar2 = new Num[3];
ar1[0] = new Num(1);
ar1[1] = new Num(2);
ar2[0] = new Num(1);
ar2[1] = new Num(2);
for(Num num : ar1) {
num.showInfo();
}
for(Num num : ar2) {
num.showInfo();
}
System.out.println(Arrays.equals(ar1,ar2)); //false
}
}
equals 클래스가 내용 비교가 아닌 참조 값을 비교한다
그러므로 내용 비교를 하려면 오버라이딩으로 equals 클래스가 객체로 받는 부분을 변경해야 한다.
import java.util.Arrays;
class Num{
private int num;
public Num(int num){
this.num = num;
}
@Override
public boolean equals(Object obj) {
if(this.num == ((Num)obj).num)
return true;
else
return false;
}
public void showInfo() {
System.out.println(num);
}
}
public class ArrayObjEq {
public static void main(String[] args){
Num[] ar1 = new Num[2];
Num[] ar2 = new Num[2];
ar1[0] = new Num(1);
ar1[1] = new Num(2);
ar2[0] = new Num(1);
ar2[1] = new Num(2);
for(Num num : ar1) {
num.showInfo();
}
for(Num num : ar2) {
num.showInfo();
}
System.out.println(Arrays.equals(ar1,ar2)); //true
}
}
Arrays.sort
: 배열을 정렬함
import java.util.Arrays;
public class ArraySort {
public static void main(String[] args){
int[] ar1 = {1,5,8,9};
Arrays.sort(ar1);
for(int n : ar1)
System.out.println(n);
}
}
객체로 생성된 배열 정렬하기
인터페이스 comparable의 추상 메소드 compareTo, toString을 오버라이딩한다
import java.util.Arrays;
import java.util.Objects;
class Person implements Comparable{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
@Override
public int compareTo(Object o){
Person p = (Person)o;
if(this.age > p.age)
return 1;
else if(this.age < p.age)
return -1;
else
return 0;
}
@Override
public String toString(){
return name + ":" + age;
}
}
public class ArrObjSort {
public static void main(String[] args){
Person[] ar = new Person[2];
ar[0] = new Person("min",23);
ar[1] = new Person("Gee",17);
Arrays.sort(ar);
for(Person p : ar)
System.out.println(p);
}
}
Arrays.binarySearch
: Key값으로 어디 index에 있는지 찾음
import java.util.Arrays;
public class ArraySearch {
public static void main(String[] args){
int[] ar = {1,4,2,8};
Arrays.sort(ar);
for(int n : ar)
System.out.println(n);
int idx = Arrays.binarySearch(ar,4);
System.out.println("where 4:"+idx);
}
}