자바의정석 3rd Edition 2권을 참조하였습니다.
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76083001
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 |