FIF's 코딩팩토리

자바 기초 NCS교육과정(42)-컬렉션1 본문

Back-End/국비 NCS교과과정

자바 기초 NCS교육과정(42)-컬렉션1

FIF 2019. 8. 1. 17:22
반응형
자료구조

자료를 효율적으로 사용하기 위해서 자료의 특성에 따라서 분류하여 구성하고 
저장 및 처리하는 모든 작업이다. 즉 데이터의 저장과 관련이 있는 학문으로 
검색 등 다양한 측면을 고려하여 데이터의 저장방법을 연구한다. 

 

알고리즘

문제를 해결하거나 함수를 계산하기 위해 사용한 명령문들의 집합이다.  
즉 저장된 데이터의 일부 또는 전체를 대상으로 진행하는 각종 연산을 연구하는 학문이다. 

 

 

컬렉션프레임워크

자료구조(Data Structure)를 바탕으로 객체들을 효율적으로 
추가, 삭제, 검색할 수 있도록 제공해주는 표준화된 방법을 제공하는 인터페이스와 클래스들을 의미한다.
컬렉션은 요소를 수집해서 저장하는 것이고 프레임워크는 사용방법을 정해 놓은 라이브러리를 말한다.


Java175_Vector.java

public class Java175_Vector {

	public static void main(String[] args) {
		Vector v=new Vector(3);
		//Integer -> Object : up-casting
		v.add(new Integer(10));
		v.add(new Integer(20));
		v.add(new Integer(30));
		v.add(new Integer(40));
		//2index의 요소를 제거
		v.remove(2);
		System.out.println(v.capacity());//메모리 크기
		System.out.println(v.size());//요소 크기
		for(int i=0;i<v.size();i++) {
			Integer it=(Integer)v.get(i);
			System.out.println(it);
		}
		
	}

}

출력결과

 

Java176_List.java

public class Java176_List {

	public static void main(String[] args) {
		UserList uList=new UserList();
		uList.add(new Integer(10));
		uList.add(new Integer(20));
		uList.add(new Integer(30));
		uList.add(new Integer(40));
		
		System.out.println(uList.remove(1)+"요소 제거");
		
		for(int i=0 ; i<uList.size();i++) {
			Integer it=(Integer)uList.get(i);
			System.out.println(it);
		}
		

	}

}

출력결과

 

  배열: length키워드
  문자열:length()메소드
  컬렉션:size()메소드
   
  컬렉션 클래스를 선언하고 생성할 때 제너릭을 선언한다.
  제너릭(generic):컬렉션 클래스에 저장된 객체를 가져올때
  다운캐스팅하는 작업을 생략할 수 있도록 제공해주는 기능이다.

 

Java177_Vector.java

public class Java177_Vector {

	public static void main(String[] args) {
		Vector<String> v = new Vector<>();
		v.add(new String("java"));
		v.add(new String("jsp"));
		v.add(new String("spring"));

		System.out.println("///////////일반 반복문//////////");
		for (int i = 0; i < v.size(); i++) {
			String data = v.get(i);
			System.out.println(data);
		}
		System.out.println("///////////개선된 루프//////////");
		// for(데이터타입 변수 : 배열 or 컬렉션)
		for (String st : v) {
			System.out.println(st);
		}

		Vector<Number> vt = new Vector<Number>();
		// Integer->Number->Object : up-casting
		vt.add(new Integer(10));
		// Float->Number->Object : up-casting
		vt.add(new Float(5.4f));
		// Double->Number->Object : up-casting
		vt.add(new Double(3.4));

		for (Number ne : vt) {
			if (ne instanceof Integer) {
				Integer it = (Integer) ne;
				System.out.println(it);
			} else if (ne instanceof Float) {
				Float ft = (Float) ne;
				System.out.println(ft);
			} else if (ne instanceof Double) {
				double de = (double) ne;
				System.out.println(de);
			}
		}

	}

}

출력결과

 

Java178_Vector.java

public class Java178_Vector {

	public static void main(String[] args) {
		Person p1=new Person("홍길동",30);
		Person p2=new Person("이영희",25);
		System.out.println(p1.toString());
		System.out.println(p2.toString());
		System.out.println("==============================");
		
		Person[] ps=new Person[2];
		ps[0]=new Person("홍길동",30);
		ps[1]=new Person("이영희",25);
		for(Person pn : ps)
			System.out.println(pn);
		System.out.println("==================================");
		
		Vector<Person> vt=new Vector<Person>();
		vt.add(new Person("홍길동",30));
		vt.add(new Person("이영희",25));
		for(Person pn : vt)
			System.out.println(pn.toString());
	}

}

출력결과

 

Java179_Vector.java

 

public class Java179_Vector {

	public static void main(String[] args) {
		Vector<String> v= new Vector<String>();
		v.add(new String("java"));
		
		v=new Vector<String>(2);
		v.add(new String("seoul"));
		v.add(new String("busan"));
		v.add(new String("inchon"));
		
		System.out.println("용량:"+v.capacity());
		System.out.println("크기:"+v.size());
		
		v=new Vector<String>(2,1);
		v.add(new String("홍길동"));
		v.add(new String("영순이"));
		v.add(new String("갑돌이"));
		
		System.out.println("용량:"+v.capacity());
		System.out.println("크기:"+v.size());

	}

}

출력결과

 

Java180_Vector.java

public class Java180_Vector {

	public static void main(String[] args) {
		Vector<Integer> v= new Vector<Integer>();
		v.add(new Integer(10));
		v.add(new Integer(20));
		v.add(new Integer(30));
		//요소가 저장되여 있지 않은 메모리 제거
		v.trimToSize();
		System.out.println(v.capacity());
		

	}

}

출력결과

 

 

 [프로그램 출력결과]
kim    56  78   12  146
hong   46  100  97  243
park   96  56   88  240
 
  1 입력스트림연결
  2 한줄 읽어오고
  3 sawon멤버변수
  4 vector 추가
  5 234 반복
  6 vector 리턴

 

Java181_Vector.java

public class Java181_Vector {

	public static void main(String[] args) {
		String sn = "./src/java1012_collection/score.txt";
		Vector<Sawon> vt = lines(sn);
		prnDisplay(vt);
	}// end main()

	private static Vector<Sawon> lines(String strName) {
		// strName 매개변수의 값을 이용해서 Vector에 데이터를 저장한후
		// 리턴하는 프로그램을 구현하시오.
		Vector<Sawon> v = new Vector<Sawon>();
		File file = new File(strName);
		Scanner sc = null;
		try {
			sc = new Scanner(file);
			while (sc.hasNextLine()) {
				String stn = sc.nextLine();
				String[] data = stn.split("[:/]");
				Sawon sn = new Sawon(data[0], Integer.parseInt(data[1]), Integer.parseInt(data[2]),
						Integer.parseInt(data[3]));
			}
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} finally {
			sc.close();
		}

		FileReader fr = null;
		BufferedReader br = null;
		try {
			fr = new FileReader(file);
			br = new BufferedReader(fr);
			String line = "";
			while ((line = br.readLine()) != null) {
				String[] arr = line.split(":");
				String[] arr2 = arr[1].split("/");
				v.add(new Sawon(arr[0], Integer.parseInt(arr2[0]), Integer.parseInt(arr2[1]),
						Integer.parseInt(arr2[2])));
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return v;
	}// end lines()

	private static void prnDisplay(Vector<Sawon> vt) {
		// vt에 저장된 객체들을 출력결과와 같이 프로그램을 구현하시오.
		for (Sawon pn : vt)
			System.out.println(pn.toString());

	}// end prnDisplay()

}// end class

출력결과

 

 

Vector와 ArrayList
  1 Vector 은 동기화 처리가 되어 있고 ArrayList은 비동기화 처리한다.
  2 Vector와 ArrayList은 메모리에 요소를 처리할 떄 배열의 구조를 따른다.
  3 Vector와 ArrayList의 클래스는 처리방법이 비슷한다.
  4 Vector와 ArrayList으로 요소의 삽입, 삭제를 처리하는 것은 좋은 방법이 아니다.

 

Java182_ArrayList.java

public class Java182_ArrayList {

	public static void main(String[] args) {
		ArrayList<Integer> aList=new ArrayList<Integer>();
		aList.add(new Integer(10));
		aList.add(new Integer(20));
		aList.add(new Integer(30));
		
		for(int i=0;i<aList.size();i++)
			System.out.println(aList.get(i));
		
	}

}

출력결과

 

Java183_ArrayList.java

public class Java183_ArrayList {

	public static void main(String[] args) {
		ArrayList<String> aList = new ArrayList<String>();
		aList.add(new String("java"));
		aList.add(new String("jsp"));
		aList.add(new String("spring"));
		prnDisplay(aList);

	}

	public static void prnDisplay(ArrayList<String> aList) {
		// aList매개변수의 요소에서 'j'가 포함되어 있는 요소만
		// 출력하는 프로그램을 구현하세요
		for (int i = 0; i < aList.size(); i++) {
			if (aList.get(i).matches(".*j.*")) {
				System.out.println(aList.get(i));
			}
		}
		for (String sn : aList) {
			// sn="java"
			for (int i = 0; i < sn.length(); i++) {
				if (sn.charAt(i) == 'j') {
					System.out.println(sn.toString());
				}
			}
		}
		for (String sn : aList) {
			char[] data = sn.toCharArray();
			for (int i = 0; i < data.length; i++) {
				if (data[i] == 'j') {
					System.out.println(data);
					break;
				}
			}
		}
		for (String sn : aList) {
			if (sn.contains("j")) {
				System.out.println(sn.toString());
			}

		}
		for (String sn : aList) {
			if (sn.matches(".*j.*")) {
				System.out.println(sn.toString());
			}

		}

	}

}

출력결과

 

Java184_ArrayList.java

public class Java184_ArrayList {

	public static void main(String[] args) {
		ArrayList<String> aList = new ArrayList<String>();
		aList.add("oracle");
		aList.add("mysql");
		aList.add("mssql");
		String[] arr = display(aList);
		for (String data : arr)
			System.out.println(data);

	}

	public static String[] display(ArrayList<String> aList) {
		/*
		 * String[] stn=new String[aList.size()];
		 *  for(int i=0;i<aList.size();i++)
		 * stn[i]=aList.get(i);
		 * return stn;
		 */

		/*Object[] obj = aList.toArray();
		String[] stn = new String[obj.length];
		for (int i = 0; i < stn.length; i++) {
			stn[i] = (String) obj[i];
		}
		return stn;*/

		/*String[] stn=new String[aList.size()];
		return aList.toArray(stn);*/
		
		return aList.toArray(new String[aList.size()]);
		
	}

}

출력결과

 

Java185_ArrayList.java

public class Java185_ArrayList {

	public static void main(String[] args) {
		String[] arr = { "oracle", "mysql", "mssql" };
		//배열->컬렉션(List)
		List<String> list=Arrays.asList(arr);
		for(String sn:list)
			System.out.println(sn);
	}

}

출력결과

 

Enumeration은 Vector와 Hashtable에서만 제공이 되는 인터페이스이다.

 

Java186_Enumeration.java

public class Java186_Enumeration {

	public static void main(String[] args) {
		Vector<Integer> v=new Vector<Integer>();
		v.add(new Integer(10));
		v.add(new Integer(20));
		v.add(new Integer(30));
		
		/*for(int i=0; i<v.size(); i++)
			System.out.println(v.get(i));*/
		
		//열거형
		/*Enumeration<Integer> enu=v.elements();
		while(enu.hasMoreElements())
			System.out.println(enu.nextElement());*/

		//반복자
		/*Iterator<Integer> ite=v.iterator()	;
		while(ite.hasNext())
			System.out.println(ite.next());*/		
		
		for(Integer ig:v)
			System.out.println(ig);
	}

}

출력결과

 

반응형
Comments