Computer Science/DataStructure

Properties

자바의정석 3rd Edition 2권을 참조하였습니다.

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76083001 

 

Java의 정석

저자는 자바를 소개하는데 그치지 않고 프로그래머로써 꼭 알아야하는 내용들을 체계적으로 정리하였으며 200페이지에 달하는 지면을 객체지향개념에 할애함으로써 이 책 한 권이면 객체지향

www.aladin.co.kr

 

Properties

HashMap의 구버전인 Hashtable을 상속받아 구현한 것

Hashtale은 키와 값을 (Object, Object)의 형태로 저장하나

Properties는 (String, String)의 형태로 저장하기에 보다 단순화된 컬렉션클래스

주로 애플리케이션의 환경설정과 관련된 속성(property)을 저장하는데 사용

데이터를 파일로부터 읽고 쓰는 편리한 기능을 제공한다.

그래서 간단한 입출력은 Properties를 활용하면 몇 줄의 코드로 쉽게 해결될 수 있다.

 

PropertiesEx1

더보기
package kr.co.dong.datastructure.properties;

import java.util.*;

public class PropertiesEx1 {
	public static void main(String[] args) {
		Properties prop = new Properties();
		
		// prop에 키와 값(key, value)을 저장한다.
		prop.setProperty("timeout", "30");
		prop.setProperty("language", "kr");
		prop.setProperty("size", "10");
		prop.setProperty("capacity", "10");
		
		// prop에 저장된 요소들을 Enumeration을 이용해서 출력한다.
		Enumeration e = prop.propertyNames();
		
		while(e.hasMoreElements()) {
			String element = (String)e.nextElement();
			System.out.println(element + "=" + prop.getProperty(element));
		}
		System.out.println();
		prop.setProperty("size", "20");// size의 값을 20으로 변경한다.
		System.out.println("size=" + prop.getProperty("size"));
		System.out.println("capacity=" + prop.getProperty("capacity", "20"));
        //getProperty는 읽어 오려는 key값이 존재하면 key에 해당하는 value를 가져오고
        // 존재하지 않는다면 기본값을 출력한다.
		System.out.println("loadfactor=" + prop.getProperty("loadfactor", "0.75"));
		
		System.out.println(prop);	// prop에 저장된 요소들을 출력한다.
		prop.list(System.out);		// prop에 저장된 요솓들을 화면(System.out)에 출력한다.
		
	}
}
/*
capacity=10
size=10
timeout=30
language=kr

size=20
capacity=10
loadfactor=0.75
{size=20, language=kr, timeout=30, capacity=10}
-- listing properties --
size=20
language=kr
timeout=30
capacity=10
*/

 

PropertiesEx2

더보기
package kr.co.dong.datastructure.properties;

import java.io.*;
import java.util.*;

public class PropertiesEx2 {
	public static void main(String[] args) {
		// commandline에서 inputfile을 지정해주지 않으면 프로그램을 종료한다.
		if(args.length != 1) {
			System.out.println("USAGE: java PropertiesEx2 INPUTFILENAME");
			System.exit(0);
		}
		
		Properties prop = new Properties();
		String inputFile = args[0];
		
		try {
			prop.load(new FileInputStream(inputFile));
		}catch (IOException e) {
			System.out.println("지정된 파일을 찾을 수 없습니다.");
			System.exit(0);
		}
		
		String name = prop.getProperty("name");
		String[] data = prop.getProperty("data").split(",");
		int max = 0, min = 0;
		int sum = 0;
		
		for(int idx = 0; idx < data.length; idx++) {
			int intValue = Integer.parseInt(data[idx]);
			
			if (idx == 0) max = min = intValue;
			if(max < intValue) {
				max = intValue;
			}else if(min > intValue) {
				min = intValue;
			}
			sum += intValue;
		}
		
		System.out.println("이름 : "+ name);
		System.out.println("최대값 : "+ max);
		System.out.println("최소값 : "+ min);
		System.out.println("합계 : "+ sum);
		System.out.println("평균 : "+ (sum * 100.0/data.length)/100);
	}
}

 

PropertiesEx3.java

더보기
package kr.co.dong.datastructure.properties;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;

public class PropertiesEx3 {
	public static void main(String[] args) {
		Properties prop = new Properties();
		
		prop.setProperty("timeout", "30");
		prop.setProperty("language", "한글");
		prop.setProperty("size", "10");
		prop.setProperty("capacity", "10");
		
		try {
			prop.store(new FileOutputStream("output.txt"), "Properties Example");
			
			prop.storeToXML(new FileOutputStream("output.xml"), "Properties Example");
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

PropertiesEx4.java

더보기
package kr.co.dong.datastructure.properties;

import java.util.*;

public class PropertiesEx4 {
	public static void main(String[] args) {
		Properties sysProp = System.getProperties();
		System.out.println("java.version : " + sysProp.getProperty("java.version"));
		System.out.println("user.language : " + sysProp.getProperty("user.language"));
		
		sysProp.list(System.out);
	}
}
/*
실행 결과
java.version : 15.0.2
user.language : ko
-- listing properties --
user.script=
java.specification.version=15
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
sun.cpu.isalist=amd64
sun.jnu.encoding=MS949
java.runtime.version=15.0.2+7-27
java.class.path=C:\Devjun\workspaces\testjava\bin
user.name=62
java.vm.vendor=Oracle Corporation
path.separator=;
sun.arch.data.model=64
os.version=10.0
user.variant=
java.runtime.name=OpenJDK Runtime Environment
java.vendor.url=https://java.oracle.com/
file.encoding=MS949
java.vm.specification.version=15
os.name=Windows 10
java.vm.name=OpenJDK 64-Bit Server VM
sun.java.launcher=SUN_STANDARD
user.country=KR
sun.boot.library.path=C:\Devjun\eclipse\plugins\org.eclipse...
sun.java.command=kr.co.dong.datastructure.properties.P...
java.vendor.url.bug=https://bugreport.java.com/bugreport/
java.io.tmpdir=C:\Users\62\AppData\Local\Temp\
jdk.debug=release
sun.cpu.endian=little
java.version=15.0.2
user.home=C:\Users\62
user.dir=C:\Devjun\workspaces\testjava
user.language=ko
os.arch=amd64
java.specification.vendor=Oracle Corporation
java.vm.specification.name=Java Virtual Machine Specification
java.version.date=2021-01-19
java.home=C:\Devjun\eclipse\plugins\org.eclipse...
sun.os.patch.level=
file.separator=\
java.vm.compressedOopsMode=Zero based
line.separator=

java.library.path=C:\Devjun\eclipse\plugins\org.eclipse...
java.vm.specification.vendor=Oracle Corporation
java.specification.name=Java Platform API Specification
java.vm.info=mixed mode
java.vendor=Oracle Corporation
java.vm.version=15.0.2+7-27
sun.io.unicode.encoding=UnicodeLittle
java.class.version=59.0

*/

 

 

 

 

 

 

 

'Computer Science > DataStructure' 카테고리의 다른 글

컬렉션 클래스 정리 & 요약  (0) 2022.11.23
Collections  (0) 2022.11.23
TreeMap  (0) 2022.11.22
해싱과 해싱함수  (0) 2022.11.21
HashMap과 Hashtable  (0) 2022.11.18