gpt4 book ai didi

java - 将 4 个列表合并为一个的最佳方式

转载 作者:行者123 更新时间:2023-11-30 07:00:08 26 4
gpt4 key购买 nike

我必须预处理 4 个医疗数据列表,然后才能将其导入软件。我给出了 4 个列表,每个列表都已订购,如下所示:

File 1) chapter
A00-B99;
C00-D48;
D50-D89;
C00-C99;
E00-E90;
...
Z00-Z99;

File 2) subchapter
A00-A09;
A15-A19;
A92-A99;
B95-B98;
B99-B99;
C00-C48;
...
Z80-Z99;

File 3) Groups
A00.-
A01.-
A02.-
...
C01.-
....
Z99.-

File 4) diagnoses

A00.0;
A00.1;
A00.7;
A00.8;
A01.7;
A02.8;
..
Z00.3;
Z00.4;

;

最后应按以下列表排序。每行都是 csv 文件中的一行。

A00-B99; (Chapter)
A00-A09; (Subchapter)
A00.- (corresponding group)
A00.0 (corresponding diagnoses)
A00.1
A00.7
A00.8
A01.- (corresponding group)
A01.7 (corresponding diagnoses)
A02.- (corresponding group)
A02.8 (corresponding diagnoses)
...
B15-B99(Subchapter)
...
C00-C99 (Chapter)
C00-D48 (Subchapter)
C01.- (corresponding group)
C01.2 (corresponding diagnoses)

到目前为止,我已经通过使用一些链接的 hasmap 进行了尝试,但没有得到正确的结果。

while (entries_kapitel.hasNext()) {

Entry thisEntry_kapitel = (Entry) entries_kapitel.next();
String key_kapitel = (String) thisEntry_kapitel.getKey();
String text_kapitel = (String) thisEntry_kapitel.getValue();

// A00-B99 -> A und B
String kapitel_char1 = key_kapitel.split("-")[0].substring(0, 1);
String kapitel_char2 = key_kapitel.split("-")[1].substring(0, 1);

// A00-B99 -> 99
int kapitel_int2 = Integer.parseInt(key_kapitel.split("-")[1].substring(1, 3));
// subchapters
while (entries_gruppen.hasNext()) {

Entry thisEntry_gruppen = (Entry) entries_gruppen.next();
String key_gruppen = (String) thisEntry_gruppen.getKey();
String text_gruppen = (String) thisEntry_gruppen.getValue();

// Gruppe splitten T90-T89
String gruppe_char1 = key_gruppen.split("-")[0].substring(0, 1);
String gruppe_char2 = key_gruppen.split("-")[1].substring(0, 1);
int gruppe_int2 = Integer.parseInt(key_gruppen.split("-")[1].substring(1, 3));


if (gruppe_char1.equals(gruppe_char2) == false){
System.err.println("Subchapters start with the same capital!");
System.exit(1);
}
while (entries_gruppierung.hasNext()) {
Entry thisEntry_gruppierung = (Entry) entries_gruppierung.next();
String key_gruppierung = (String) thisEntry_gruppierung.getKey();
String text_gruppierung = (String) thisEntry_gruppierung.getValue();

String gruppierung_char1 = key_gruppierung.substring(0, 1);
int gruppierung_int1 = Integer.parseInt(key_gruppierung.substring(1, 3));
(gruppierung_char1.equals(gruppe_char1) && gruppierung_int1 <= gruppe_int2) {
System.out.println("Chapter: " + key_kapitel + " subchapter: " + key_gruppen + " group" + key_gruppierung);


while (diagnoses.hasNext()) {
....

结果看起来并不像它应该的那样(缺少条目并且它们的排序不正确)解决这个任务的最佳方法是什么?我无法获得工作树,这可能是最好的方法,对吗?

最佳答案

如果我很了解您的需求。我会使用排序/合并连接方法。考虑 4 个包含正确排序的条目的列表。然后您可以通过交替扫描来合并列表。我还没有测试过代码,但您会得到总体思路:

public class EntryComparator implements Comparator<Entry>
{
public boolean isSubsection(Entry e1, Entry e2)
{
// should return true if e2 subsection of e1
}

public int compare(Entry e1, Entry e2)
{
// see the Comparator interface documentation
}
}

List<Entry> chapters = new ArrayList<>();
List<Entry> subchapters = new ArrayList<>();
List<Entry> groups = new ArrayList<>();
List<Entry> diagnoses = new ArrayList<>();

List<Entry> result = new ArrayList<>(); // will hold the final result

// populate the lists, maybe sort them using Collections.sort and the Comparator above

int i1 = 0;
int i2 = 0;
int i3 = 0;
int i4 = 0;

EntryComparator c = new EntryComparator();

while( i1 < chapters.size() )
{
result.add(chapters.get(i1));
while( i2 < subchapters.size() &&
c.isSubsection(chapters.get(i1), subchapters.get(i2)) )
{
result.add(subchapters.get(i2));
while( i3 < groups.size() &&
c.isSubsection(subchapters.get(i2), groups.get(i3)) )
{
result.add(groups.get(i3));
while( i4 < subchapters.size() &&
c.isSubsection(groups.get(i3), diagnoses.get(i4)) )
{
result.add(diagnoses.get(i4));
i4++;
}
i3++;
}
i2++;
}
i1++;
}

编辑:911DidBush 给出的建议很好,您可以将相同的模式应用于专门的类(class)。

关于java - 将 4 个列表合并为一个的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41065360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com