split 객체화 문제 - 0단계

이동명·2023년 5월 30일
0
post-thumbnail

아래의 더미데이터로 객체화를 시켜보자.

1"수\t이름\t나이\n" +
"1\t박\t20\n" +
"2\t김\t30\n" +
"3\t이\t40\n" +
"4\t권\t비공개";

2"수\t상호명\t좌표\t지역\n" +
"1\t피자\t37.01,127.01\t대구\n" +
"2\t치킨\t37.03,127.02\t대전\n" +
"3\t햄버거\t37.13,127.02\t서울\n" +
"4\t감자탕\t36.13,127.02\t부산";

나의풀이

  1. 먼저 \n 으로 rows 를 만든다
  2. 도출된 rows 에서 다시한번 \t를 기준으로 배열을 만든다
  3. 도출된 결과로 객체를 만들어준다
  4. 간단하다
import java.util.ArrayList;import java.util.Arrays;
import java.util.List;

public class escape {
	public static void main(String[] args) {
		String excel =  "수\t이름\t나이\n" +
						"1\t박\t20\n" +
						"2\t김\t30\n" +
						"3\t이\t40\n" +
						"4\t권\t비공개";
		
        //rows 만들자..
		String[] rows = excel.split("\n");
		
		List<String[]> list = new ArrayList();
		
        //만든 rows에서 tap 기준으로 찢자..
		for (int i = 1; i < rows.length; i++) {
			list.add(rows[i].split("\t"));
		}
		
		List<People> answer = new ArrayList<People>();
		
        // 객체 만들어주자..
		for (int j = 0; j < list.size(); j++) {
			String[] get = list.get(j);
			
			People p = new People(Integer.parseInt(get[0]), get[1], get[2]);
			
			answer.add(p);
		}
	
		System.out.println(answer.toString());
		// [{1, 박, 20}, {2, 김, 30}, {3, 이, 40}, {4, 권, null}]
        
        
        // 아래의 문제도 위와 마찬가지임.. 다만 배열만 한번 신경써주자..
		String excel2 = "수\t상호명\t좌표\t지역\n" +
						"1\t피자\t37.01,127.01\t대구\n" +
						"2\t치킨\t37.03,127.02\t대전\n" +
						"3\t햄버거\t37.13,127.02\t서울\n" +
						"4\t감자탕\t36.13,127.02\t부산";
		
		String[] rows2 = excel2.split("\n");
		
		List<String[]> list2 = new ArrayList();
		
		for (int i = 0; i < rows2.length; i++) {
			list2.add(rows2[i].split("\t"));
		}
		
		List<People2> answer2 = new ArrayList<People2>();
		
		for (int j = 1; j < list2.size(); j++) {
			String[] get2 = list2.get(j);
			
			People2 p2 = new People2(Integer.parseInt(get2[0]), get2[1], get2[2], get2[3]);
			
			answer2.add(p2);
		}
		
		System.out.println(answer2.toString());
		}
		
        //[{1, 피자, coordinate=[37.01, 127.01], 대구}, {2, 치킨, coordinate=[37.03, 127.02], 대전}, {3, 햄버거, coordinate=[37.13, 127.02], 서울}, {4, 감자탕, coordinate=[36.13, 127.02], 부산}]

		System.out.println(answer2.toString());
  		
 	}
}
class People {
    private int number;
    private String name;
    private Integer age;
    
    public People(int number, String name, String age) {
		
    	if (!age.equals("비공개")) {
    		 this.age = Integer.parseInt(age);
    	}
    	
    	this.number = number;
    	this.name = name;
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "{" + number + ", " + name + ", " + age + "}";
	}
}

class People2 {
	private int num;
	private String name;
	private float[] coordinate;
	private String region;
	
	public People2(int num, String name, String coordinate, String region) {
		this.num = num;
		this.name = name;
		float[] tmp = new float[2];
		tmp[0] = Float.parseFloat(coordinate.split(",")[0]);
		tmp[1] = Float.parseFloat(coordinate.split(",")[1]);
		this.coordinate = tmp;
		this.region = region;
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "{" + num + ", " + name + ", coordinate=" + Arrays.toString(coordinate) + ", " + region + "}";
	}
}

후기

간단한 코드와 작동 방식이었지만 js를 하다가 java를 공부하다 보니 전체적인 맥락은 비슷하지만 자료구조를 다루는데 적응이 조금 늦어지는 것 같다. 이 문제로 인해서 조금 더 익숙해지는 계기가 되었다.

profile
Web Developer

0개의 댓글