본문 바로가기

개발관련/Computer

[Java]구분자에 따라 리스트를 여러개로 쪼개기


데이터베이스에서 한번에 카테고리별로 받아와서
그것을 다시 여러개의 리스트로 쪼개야하는 상황이 생겼다...

구분자를 지정하면 리스트 속에 리스트가 들어가도록 만들어준다.

좀 더 스마트한 방법이 있을법한데, 아직 내 머리로는
조건문을 주고 비교해서 잘라오는 방법밖에는 잘 모르겠다...
데이터가 많아지면 최적화를 한다든지 구분자가 무엇인지 몰라도
구분자 파라메터 명만 알면 알아서 걸러서 가져온다든지  하는 기능은
어떻게 하면 좋을까?! ㅠㅠ

우선 까먹지 않도록 여기에 기록해둔다.

package test.array;

import java.util.ArrayList;

public class SplitArrayByParameter {
 
 static ArrayList<Board> list;
 public static void main(String ar[]){
  System.out.println("START!");
  init();
  
  //구분자가 몇개인지 무엇인지 알아야함.
  String[] gbns = {"all","osirase","event","update","mainte"};
  ArrayList<ArrayList<Board>> lists = new ArrayList<ArrayList<Board>>();
  for(int j=0;j<gbns.length;j++){
   ArrayList<Board> tmpList = new ArrayList<Board>();
   for(int i=0;i<list.size();i++){
    if(list.get(i).getGbn().equals(gbns[j])){
     tmpList.add(list.get(i));
    }
   }
   lists.add(tmpList);
  }
  
  //잘 들어있는지 확인
  for(ArrayList<Board> list:lists){
   for(Board tmp :list){
    System.out.println(tmp.getGbn() +" : " + tmp.getTitle());
   }
  }
 }
 
 public static void init(){
   list = new ArrayList<Board>();
   list.add(new Board("all", "1"));
   list.add(new Board("all", "2"));
   list.add(new Board("all", "3"));
   list.add(new Board("all", "4"));
   list.add(new Board("all", "5"));
  
   list.add(new Board("osirase", "6"));
   list.add(new Board("osirase", "7"));
   list.add(new Board("osirase", "8"));
   list.add(new Board("osirase", "9"));
   list.add(new Board("osirase", "10"));
  
   list.add(new Board("event", "11"));
   list.add(new Board("event", "12"));
   list.add(new Board("event", "13"));
   list.add(new Board("event", "14"));
   list.add(new Board("event", "15"));
  
   list.add(new Board("update", "16"));
   list.add(new Board("update", "17"));
   list.add(new Board("update", "18"));
   list.add(new Board("update", "19"));
   list.add(new Board("update", "20"));
  
   list.add(new Board("mainte", "21"));
   list.add(new Board("mainte", "22"));
   list.add(new Board("mainte", "23"));
   list.add(new Board("mainte", "24"));
   list.add(new Board("mainte", "25"));
 }
 
 public static class Board{
  private String gbn;
  private String title;
  
  public Board(String gbn, String title){
   this.gbn = gbn;
   this.title = title;
  }
  
  public String getGbn() {
   return gbn;
  }
  public void setGbn(String gbn) {
   this.gbn = gbn;
  }
  public String getTitle() {
   return title;
  }
  public void setTitle(String title) {
   this.title = title;
  }
 }
 
}