프로그램 언어/Java

Java ArrayList <class>의 날짜 값으로 정렬

husks 2023. 3. 2. 10:25
반응형

ArrayList 안에 객체들이 존재하고 그 안의 날짜를 기준으로 정렬하는 예제 입니다.

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;

public class CompareDate {
 public static void main(String[] args) { 
  Calendar calendar1 = Calendar.getInstance();
  calendar1.set(Calendar.YEAR, 2021);
  calendar1.set(Calendar.MONTH, 9-1);
  calendar1.set(Calendar.DAY_OF_MONTH, 15); 
  Calendar calendar2 = Calendar.getInstance();
  calendar2.set(Calendar.YEAR, 2021);
  calendar2.set(Calendar.MONTH, 8-1);
  calendar2.set(Calendar.DAY_OF_MONTH, 1); 
  Calendar calendar3 = Calendar.getInstance();
  calendar3.set(Calendar.YEAR, 2022);
  calendar3.set(Calendar.MONTH, 3-1);
  calendar3.set(Calendar.DAY_OF_MONTH, 10); 
  Calendar calendar4 = Calendar.getInstance();
  calendar4.set(Calendar.YEAR, 2022);
  calendar4.set(Calendar.MONTH, 1-1);
  calendar4.set(Calendar.DAY_OF_MONTH, 27);
      
  ArrayList<MyObject> myObjectList = new ArrayList<>();
  myObjectList.add(new MyObject(calendar1.getTime()));
  myObjectList.add(new MyObject(calendar2.getTime()));
  myObjectList.add(new MyObject(calendar3.getTime()));
  myObjectList.add(new MyObject(calendar4.getTime())); 
  // Sort the originalList by dateValue in ascending order
  Collections.sort(myObjectList, new Comparator<MyObject>() {
  	public int compare(MyObject o1, MyObject o2) {
  		return o1.getDateValue().compareTo(o2.getDateValue());
  	}
  }); 
  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy년 MM월 dd일");  
  // Add elements from the originalList to the sortedList in ascending order
  for (MyObject obj : myObjectList) { 
  	String strNowDate = simpleDateFormat.format(obj.getDateValue()); 
  	//지정한 포맷으로 변환 
  	System.out.println("포맷 지정 후 : " + strNowDate); 
  } 
 }
}

class MyObject {
 private Date dateValue; 
 public MyObject(Date dateValue) {
 	this.dateValue = dateValue;
 } 
 public Date getDateValue() {
 	return dateValue;
 }

 public void setDateValue(Date dateValue) {
 	this.dateValue = dateValue;
 }
}

 

이 예에서는 MyObject 객체의 배열 목록을 만듭니다.

 

각 객체에는 dateValue라는 날짜 필드가 있습니다. 그런 다음 dateValue필드별로 Collections.sort 메소드와 Date 클래스의 비교 메소드를 사용하여 두 객체의 dateValue를 비교하여 dateValue 필드별로 원본 목록을 정렬합니다.

 

마지막으로 myObjectList의 내용을 인쇄하여 정렬이 성공했는지 확인합니다.

반응형