키보드워리어

[자바] ArrayList 활용 본문

JAVA/입문

[자바] ArrayList 활용

꽉 쥔 주먹속에 안경닦이 2023. 3. 20. 17:58
728x90

안녕하세요 【키보드 워리어】

 

⌨🗡🧑


블로그 방문자 여러분, 반갑습니다.


원소들의 반복

이전에 저희는 기본 for문과 enhanced for loop문에 대해 배웠습니다.

 

List<String> words = List.of("Apple","Banana","Cat");

 

 

위와 같은 배열이 있다고 가정할 때 이를 출력하기 위해서 썼었죠.

 

for(int i = 0; i < words.size(); i++){
   String word = words.get(i);
   System.out.println(word);
} //for문
for(String word : words){
   System.out.println(word);
} //enhanced for문

Iterator를 사용하여 단어 배열을 반복할 수 있습니다.

Iterator는 한 번에 하나씩 컬렉션의 요소에 액세스하는 방법을 제공합니다. 예를 들면 다음과 같습니다.

 

Iterator<String> iterator = words.iterator(); //Iterator객체 생성
while(iterator.hasNext()){ //hasNext는 다음 요소가 있으면 참을 반환.
   String word = iterator.next(); //next를 통해 다음의 요소를 word로 줄 수 있습니다.
   System.out.println(word); //word 출력
}

 

ArrayList에 대한 수정

만약 제가 배열에 내용을 바꾸고자 한다면, 이미 말씀드린 Enhanced for문을 사용해서 List의 요소를 수정할 수 있지만,

이를 위해서는 Iterator를 사용하는것이 좋습니다.

 

이는 Iterator가 컬렉션을 반복하는 동안 컬렉션을 수정하는 안전한 방법을 제공하기 때문입니다.

 

Iterator<String> iterator = words.iterator();
while(iterator.hasNext()){
   String word = iterator.next();
   if(word.equals("Apple")){
      iterator.remove(); //Apple 삭제
   }
}

 

ArrayList 정렬(오름차순, 내림차순)

마지막으로 sort() 메서드를 사용하여 목록을 정렬하는 방법에 대해 설명하겠습니다.

https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collections.html

 

Collections (Java SE 17 & JDK 17)

public class Collections extends Object This class consists exclusively of static methods that operate on or return collections. It contains polymorphic algorithms that operate on collections, "wrappers", which return a new collection backed by a specified

docs.oracle.com

내용을 참고해보면

Sorts the specified list into ascending order, according to the natural ordering of its elements. 

리스트를 오름차순으로 정렬해준다고 되어있습니다.

 

Collections 클래스는 목록을 정렬하는 데 사용할 수 있는 정적 sort() 메서드를 통해서 제공합니다.

 

예를 들면 다음과 같습니다.

 

List<Integer> numbers = new ArrayList<>();
numbers.add(123);
numbers.add(12);
numbers.add(3);
numbers.add(45);

Collections.sort(numbers); // sort in 오름차순
System.out.println(numbers); // output: [3, 12, 45, 123]

이 Collections는 Comparabls 인터페이스를 구현한것으로, 이를통해 여러가지 로직을 만들 수 있는데 예를 들어
내림차순으로 정렬하기 위해서는Comparable 인터페이스를 구현하는 클래스를 생성하고 큰 수로 정렬하도록 compareTo() 메서드를 재정의할 수 있습니다.

 

public class MyNumber implements Comparable<MyNumber>{
   private int number;

   public MyNumber(int number){
      this.number = number;
   }

   public int getNumber(){
      return number;
   }

   @Override
   public int compareTo(MyNumber otherNumber){
      return otherNumber.getNumber() - this.number; // sort in 내림차순 정렬
   }
}


List<MyNumber> numbers = new ArrayList<>();
numbers.add(new MyNumber(123));
numbers.add(new MyNumber(12));
numbers.add(new MyNumber(3));
numbers.add(new MyNumber(45));

Collections.sort(numbers); // 큰 숫자부터 정렬
for(MyNumber num : numbers){
   System.out.println(num.getNumber());
}

 

728x90