Java 프로그램에 통합해야하는 몇 가지 요인이있는 표가 있습니다. 처음에는 숫자를 하드 코딩 할 생각 이었지만 요인에 맞는 데이터 구조를 만들려고 애쓰는 것처럼 보입니다. 그래서 저는 이것을 데이터베이스, 플랫 파일 또는 자바에서 참조 데이터로 구현하는 것이 더 나은지 알아 보려고했습니다. 이 숫자는 6 개월마다 바뀌며 수학 계산에 사용됩니다.참조 데이터 구현 방법 Java/DB
생각하십니까? 이 같은 느린 변화하는 데이터의 경우
Java 프로그램에 통합해야하는 몇 가지 요인이있는 표가 있습니다. 처음에는 숫자를 하드 코딩 할 생각 이었지만 요인에 맞는 데이터 구조를 만들려고 애쓰는 것처럼 보입니다. 그래서 저는 이것을 데이터베이스, 플랫 파일 또는 자바에서 참조 데이터로 구현하는 것이 더 나은지 알아 보려고했습니다. 이 숫자는 6 개월마다 바뀌며 수학 계산에 사용됩니다.참조 데이터 구현 방법 Java/DB
생각하십니까? 이 같은 느린 변화하는 데이터의 경우
관계없이 당신이 그들을 저장하는 방법에 대한 데이터를 포함하는 데이터 구조를 만들어야 할 것입니다. 그러나 이런 종류의 데이터를위한 데이터 구조는 복잡 할 필요가 없습니다. 속성을 가진 값 목록 일뿐입니다. 테이블을 복잡한 구조로 저장할 필요가 없습니다.
데이터를 단일 목록으로 표시 할 때 일반 텍스트 파일에서 데이터를로드하는 것도 매우 쉽습니다.
public class DataTable {
private List<Entry> table = new ArrayList<Entry>();
public double getValue(Sex sex, MaritalStatus maritalStatus, AgeInterval ageInterval, Type type) {
for (Entry entry : table) {
if (entry.sex == sex && entry.maritalStatus == maritalStatus && entry.ageInterval == ageInterval && entry.type == type) {
return entry.value;
}
}
throw new IllegalArgumentException("Unknown value");
}
public void load(String filename) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
String line;
while ((line = reader.readLine()) != null) {
StringTokenizer t = new StringTokenizer(line, ":");
table.add(new Entry(
Sex.valueOf(t.nextToken()),
MaritalStatus.valueOf(t.nextToken()),
AgeInterval.valueOf(t.nextToken()),
Type.valueOf(t.nextToken()),
Double.valueOf(t.nextToken())));
}
} catch (IOException e) {
throw new IllegalStateException("Failed to read the data file", e);
}
}
}
enum Sex {M, F}
enum MaritalStatus {SINGLE, MARRIED}
enum AgeInterval {I16_21, I22_35, I35_55, I55}
enum Type {GD, NGD} // Whatever this is ...
class Entry {
Sex sex;
MaritalStatus maritalStatus;
AgeInterval ageInterval;
Type type;
double value;
Entry(Sex sex, MaritalStatus maritalStatus, AgeInterval ageInterval, Type type, double value) {
this.sex = sex;
this.maritalStatus = maritalStatus;
this.ageInterval = ageInterval;
this.type = type;
this.value = value;
}
}
데이터 파일은 다음과 같습니다
M:SINGLE:I16_21:GD:1.10
F:SINGLE:I16_21:GD:1.20
...
, 나는 외부 설정 파일을 사용합니다. 데이터 구조에 따라 CSV가 제대로 작동하고 업무용 사용자가 Excel을 사용하여 쉽게 편집 할 수 있습니다.
자주 변경 될 경우 프로그래밍 방식으로 데이터를 생성해야하거나 데이터 편집을위한 UI를 제공하려는 경우 데이터베이스로 이동할 수 있습니다.
gender, age, marital_status, GD_VS_NGD, 테이블 안의 데이터 및 레코드를 유지할 필요가없는 한이 데이터를 사용하는 기간의 식별자가 필드를 분할 할 수 있습니다. 데이터의
XML로 표시 할 수 있지만 숫자 데이터가 약간있을 수 있습니다. 그러나 XML을 사용하면 상당히 설명적이고 스스로 문서화 할 수 있습니다. 그런 다음 나중에이를 Java (또는 원하는 다른 언어)로 쉽게 파싱 할 수 있습니다.
부분 XML 예제 :
<dataset>
<gd>
<16to21>
<single>
<male>1.10</male>
<female>1.20</female>
</single>
<married>
<male>0.90</male>
<female>0.80</female>
</married>
</16to21>
...
</gd>
<ngd>
...
</ngd>