gpt4 book ai didi

java - 如何在java中从头开始读取arff文件的属性?

转载 作者:行者123 更新时间:2023-11-30 05:24:16 24 4
gpt4 key购买 nike

我正在尝试从头开始读取 arff 文件以完成此作业。我觉得我做错了。例如,假设我有这一行

@attribute 'habitat' { 'd', 'g', 'l', 'm', 'p', 'u', 'w'}

我想检查它是否是一个属性,然后获取属性名称,然后将实例添加到列表中。到目前为止我正在这样做。 (st 是我从文件中读取的当前行)

st=st.replaceAll("'", "");
String[] token = st.split(" ");
if(token[0].trim().equals("@attribute")) {
Attribute a=new Attribute(token[1]);
}

我不知道如何读取实例,因为我根据空格分割它,所以实例分割错误。我觉得我读这个文件的方式是错误的这是我的属性类

public class Attribute {
public String name;
public LinkedList<Instance> instanceList=new LinkedList<Instance>();
}

有什么想法吗?

最佳答案

具体操作方法如下:

你的属性类

class Attribute {
private String name;
private LinkedList<String> instanceList;

public Attribute(String name, LinkedList<String> instanceList) {
this.name = name;
this.instanceList = instanceList;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public LinkedList<String> getInstanceList() {
return instanceList;
}

public void setInstanceList(LinkedList<String> instanceList) {
this.instanceList = instanceList;
}

@Override
public String toString() {
return "Attribute{" +
"name='" + name + '\'' +
", instanceList=" + instanceList +
'}';
}
}

你的主课:

     String str = "@attribute 'habitat' { 'd', 'g', 'l', 'm', 'p', 'u', 'w'}";
Pattern pattern = Pattern.compile("@attribute '(.*?)' \\{\\s*(.*?)\\s*\\}");
List<Attribute> list = new ArrayList<>();
// in case you would like to ignore case sensitivity,
// you could use this statement:
// Pattern pattern = Pattern.compile("\\s+", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
// check all occurance
while (matcher.find()) {
list.add(new Attribute(matcher.group(1),
new LinkedList<>(Arrays.asList(matcher.group(2).replaceAll("[',]", "").trim().split("\\s+"))))
);
}
System.out.println(list);

输出:

[Attribute{name='habitat', instanceList=[d, g, l, m, p, u, w]}]

关于java - 如何在java中从头开始读取arff文件的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58993122/

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