Arrays
< copyOfRange 메서드 >
char[] copyFrom = {'h', 'e', 'l', 'l', 'o', '!'};
char[] copyTo = Arrays.copyOfRange(copyFrom, 1, 3);// copyOfRange메서드 : 배열 범위 지정하여 복사해 반환
< compare(array, array) >
int [] array1 = {1, 2, 3, 4, 5};
int [] array2 = {6, 3, 7, 9, 2, 20];
int compare = Arrays.compare(array1, array2);
// 양수, 0, 음수(비교할 때는)
//x - y = 결과가 양수면 x가 크고, 결과가 0이면 서로 같고, 결과가 음수면 y가 크다고 생각
System.out.println(compare);// result : -1
< sort(array) >
int [] array1 = {5, 4, 2, 1, 3};
Arrays.sort(array1); //array1은 오름차순으로 정렬된다.
public static void main(String[] args) {
Item[] items = new Item [5];
items[0]= new Item("java", 50000);
items[1]= new Item("파이썬", 40000);
items[2]= new Item("C#", 4500);
items[3]= new Item("자바스크립트", 50);
items[4]= new Item("Dart", 500);
//객체의 정렬 기준은 어떻게?? comparable 상속 받고 오버라이딩 해서 구현
Arrays.sort(items);
for(Item item : items){
System.out.println(item);
//Comparable은 어떤 Item이 큰지, 작은지 기준을 정하는 interface
class Item implements Comparable{
private String name;
private int price;
public Item(String name, int price) {
this.name = name;
this.price = price;
}
// 파라미터로 들어온 Object와 내 자신을 비교하는 메소드
// compareTo에는 Object를 받아들이도록 했지만 실제로는 Item이 들어온다.
@Override
public int compareTo(Object o) {
Item d = (Item) o;
return this.name.compareTo(d.name);// String이면 비교 가능, comparable 상속 받아서
}
@Override
public String toString() {
return "Item{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
< 람다 함수 이용한 위와 같은 결과 코드 >
public static void main(String[] args) {
Item[] items = new Item [5];
items[0]= new Item("java", 50000);
items[1]= new Item("파이썬", 40000);
items[2]= new Item("C#", 4500);
items[3]= new Item("자바스크립트", 50);
items[4]= new Item("Dart", 500);
//객체의 정렬 기준은 어떻게?? comparable 상속 받고 오버라이딩 해서 구현
Arrays.sort(items,(Object o1, Object o2) -> {//람다
Item item1 = (Item) o1;
Item item2 = (Item) o2;
return item1.getName().compareTo(item2.getName());
}
);
for(Item item : items){
System.out.println(item);
}
}
< binarySearch(array, 찾는 것) >
int [] array1 = {5, 4, 2, 1, 3};
Arrays.sort(array1);
// binarySearch란
//1 ~ 100 랜덤 x라는 숫자를 생각하자
// 20 업
// 50 작아
// 범위: 1 ~ 100 50으로 업 다운 판단, 만약 다운이면
// 범위: 1 ~ 50 25로 업 다운 판단, 만약 업이면
// 범위: 25 ~ 49 ... 이런식으로 x을 찾아가는 메서드 binarySearch이다.
// 그래서 무조건 정렬 후 써야한다.
int i = Arrays.binarySearch(array1, 4);
System.out.println(i);// result=3
명령 행 아규먼트(Command-Line Arguments)
public class EmptyCommandLineArgumentExam {
public static void main(String[] args) {
System.out.println(args.length);
}
}