반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- tomcat
- springboot
- 웹프로젝트
- SpringFramework
- annotaion
- jsp
- Jenkins
- Linux
- 개발
- Spring Framework
- spring-framework
- War
- Gradle
- JAR
- Web
- mybatis
- gitlab
- oracle
- maven
- hashcode
- 이클립스
- 스프링프레임워크
- java
- REST
- Pipeline
- Spring
- git
- 스프링부트
- Spring Boot
- soap
Archives
- Today
- Total
Verity's Daily Logs_
[JAVA]배열 (Array) 본문
반응형
package com.example.demo;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class ArraysApplication {
/*
* 1. 배열이란?
* 동일한 자료형(Data Type)의 데이터를 연속된 공간에 저장하기 위한 자료구조이다.
* 즉, 연관된 데이터를 그룹화하여 묶어준다고 생각하면 된다.
*
* 2. 배열의 장점
* 연관된 데이터를 저장하기 위한 변수의 선언을 줄여주며,
* 반복문 등을 이용하여 계산과 같은 일련의 과정을 쉽게 처리할 수 있다.
* */
public static void main(String[] args){
System.out.println("ArraysApplication Start");
ArraysApplication application = new ArraysApplication();
// 3. 배열의 선언 및 사용
//application.arrayDeclaration();
// 4. Arrays APIs
application.arrayApi(new int[]{1,2,5,4,3});
// 5. Arrays 정렬하기
application.arraySorting();
}
public void arrayDeclaration(){
/*
* 3. 배열의 선언 및 사용
* 3-1. 선언과 동시에 초기화도 함께 수행하는 방법:
* 데이터들의 값을 미리 알고 있을 때 사용하면 편리함
* */
int[] numberArray = {1, 2, 3, 4, 5};
System.out.println("3. 배열의 선언 및 사용 >>> " + Arrays.toString(numberArray));
/*
* 3-2. 배열의 크기만 지정하여 변수 선언 후
* -> 향후 인덱스값으로 접근하여 데이터 값 저장
* -> 사용자로부터 배열 값을 입력받을때 사용할 수 있는 방법이다.
* */
int[] numberArray2 = new int[5];
System.out.println("5개의 정수를 입력하시오.");
Scanner sc = new Scanner(System.in);
for(int i = 0; i < numberArray2.length; i++){
numberArray2[i] = sc.nextInt();
}
System.out.println("3. 배열의 선언 및 사용 >>> " + Arrays.toString(numberArray2));
}
public void arrayApi(int[] numberArrays){
/*
* 4-1. binarySearch(배열, 찾는값) : 찾는 값에 일치하는 인덱스를 리턴한다.
* -> binarySearch는 정렬된 배열에서 찾고 싶은 값의 인덱스를 리턴해주기 때문에
* 배열이 정렬되지 않았거나, 찾는 값이 없다면 음수를 출력한다.
* */
int[] array = {1, 2, 3, 4, 5};
System.out.println("4-1. binarySearch >>> " + Arrays.binarySearch(array, 3));
/*
* 4-2. 배열 복사
* - copyOf(원본배열, 복사할 길이) : 원본배열의 인덱스 0에서부터 복사할 길이만큼 복사된 배열 리턴
* - copyOfRange(원본배열, 시작, 끝) : 시작 인덱스부터 끝 인덱스까지의 값을 복사한 배열 리턴
* */
int[] copiedArray = Arrays.copyOf(numberArrays, 3);
System.out.println("4-2. copyOf >>> " + Arrays.toString(copiedArray));
int[] copiedArray2 = Arrays.copyOfRange(numberArrays, 2, 4);
System.out.println("4-2. copyOfRange >>> " + Arrays.toString(copiedArray2));
/*
* 4-3. 배열 비교
* - equals(배열, 배열) : 두 배열의 얕은 비교
* - deepEquals(배열, 배열) : 중첩배열의 비교
* */
System.out.println("4-3. equals >>> " + Arrays.equals(numberArrays, copiedArray));
/*
* 4-4. 배열 값 채우기
* - fill(배열, [시작, 끝], 값) : 배열의 시작부터 끝까지 동일한 값으로 채울 수 있는 메서드
* */
copiedArray = Arrays.copyOf(numberArrays, numberArrays.length);
Arrays.fill(copiedArray, 0);
System.out.println("4-4. fill >>> " + Arrays.toString(copiedArray));
copiedArray = Arrays.copyOf(numberArrays, numberArrays.length);
Arrays.fill(copiedArray, 0, 2, 0);
System.out.println("4-4. fill >>> " + Arrays.toString(copiedArray));
}
public void arraySorting(){
/*
* 5-1. 배열 정렬
* - sort(배열) : 배열의 전체 항목을 오름차순으로 정렬
* 배열 타입이 클래스일 경우
* -> Comparable 인터페이스를 구현한 클래스가 있으면 된다. (compareTo 메서드 정의)
* */
int[] numberArray = {1, 2, 3, 4, 5};
Arrays.sort(numberArray);
System.out.println("5-1. sort >>> " + Arrays.toString(numberArray));
/*
* 5-2. Comparable
* Comparable 은 객체 간의 정렬에 있어서
* 오름차순, 내림차순등의 일반적인 순서를 잡는 기준이 필요할 때
* 객체 클래스에 확장해서 사용한다.
* */
User[] users = {new User("Jayce", 30), new User("Hailey", 20), new User("Amy", 22)};
Arrays.sort(users);
System.out.println("5-2. Comparable >>> " );
for(User user : users) {
System.out.println(user.getName());
}
/*
* 5-3. Comparator
* Comparator 는 일반적이지 않은 문자열의 길이 순으로 보고 싶다든지,
* Comparable 로 구현한 것 말고 다른 기준으로 정렬하고 싶다든지 할 때 사용한다.
* */
User[] users2 = {new User("Jayce", 30), new User("Hailey", 20), new User("Amy", 22)};
Comparator<User> userComparator = new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
return o1.getAge() - o2.getAge();
}
};
Arrays.sort(users2, userComparator);
System.out.println("5-3. Comparator >>> " );
for(User user : users2) {
System.out.println(user.getName());
}
}
}
class User implements Comparable<User>{
private String name;
private int age;
public User (){}
public User(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
@Override
public int compareTo(User o) {
/*
* compareTo는 int 타입을 반환하며, 파라미터로 비교대상이 되는 객체가 들어온다.
* A.compareTo(B) 일 때 A<B 인 경우는 음수를 리턴하고, A=B일 때는 0을 리턴하고, A>B일 때 양수를 리턴
* -> 정렬에 있어서 앞에 오고 싶을 때 음수를 내보내면 된다
*/
return this.name.compareTo(o.name); // 이름으로 정렬
//return this.age - o.age; // 나이순으로 정렬
}
}
반응형
'JAVA' 카테고리의 다른 글
[JAVA]String의 equals(), hashCode() (0) | 2022.02.08 |
---|---|
[JAVA]Object (equals, hashCode ...) (0) | 2022.02.08 |
[JAVA]JAVA Annotaion (+Lombok제공 Annotaion 정리) (0) | 2022.02.06 |
Comments