- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
免责声明:我昨天才学会如何做到这一点,我很绝望
我有 3 个类(class)(Student
、ClassSchedule
、ClassEnrolment
)
public class ClassEnrolment {
ClassSchedule cs;
Student stud;
public ClassEnrolment(ClassSchedule cs, Student stud) {
super();
this.cs = cs;
this.stud = stud;
}
}
-----
public class Student{
private String name;
private String matricNo;
ClassEnrolment classroom;
ClassSchedule schedule;
}
-----
public class ClassSchedule {
String classType;
int index;
int group;
String day;
String time;
String venue;
String remark;
String courseCode;
}
我正在尝试读取/写入文本文件(数据库)。我在 "/////////////////"
内的 3 行中遇到问题。
我知道 ClassEnrolment
中声明的属性不是 int 也不是 string。我该怎么做?如何将 ClassSchedule
和 Student
作为 StringTokenizer
的一部分?
文本文件存储来自ClassSchedule
的索引和来自Student
的matricNo。我有一种感觉,我这样做是错误的。
public static ArrayList readEnrolment(String filename) throws IOException {
ArrayList stringArray = (ArrayList) read(filename);
ArrayList alr = new ArrayList();
for (int i = 0; i < stringArray.size(); i++) {
String st = (String) stringArray.get(i);
StringTokenizer star = new StringTokenizer(st, SEPARATOR);
///////////////////////////////////////////////////
int cs = Integer.parseInt(star.nextToken().trim());
String stud = star.nextToken().trim();
ClassEnrolment enrolment = new ClassEnrolment(cs, stud);
//////////////////////////////////////////////////
alr.add(enrolment);
}
return alr;
}
public static void saveEnrolment(String filename, List al) throws IOException {
List alw = new ArrayList();
for (int i = 0; i < al.size(); i++) {
ClassEnrolment enrolment = (ClassEnrolment) al.get(i);
StringBuilder st = new StringBuilder();
st.append(enrolment.getCs2());
st.append(SEPARATOR);
st.append(enrolment.getStud2());
alw.add(st.toString());
}
write(filename, alw);
}
最佳答案
您的问题是 Serialization 的问题。您完全可以声明您的 classEnrolment
如Serializable
(不要忘记serialUUID)并让经典的java序列化过程将对象作为字节写入文件中。
但是,您在这里尝试的是为您的类构思一个自定义序列化器。我建议您使用泛型,例如:
public interface Serializer<T> {
byte[] write(T objectToSerialize);
//to build a factory/service around it
boolean canDeserialize(byte[] serializedObject);
T read(byte[] serializedObject);
}
这样你的方法 read/writeEnrollment 将只是创建一个 Serializer<ClassEnrollment>
并让它完成它的工作(这可能会创建一个 Serializer<Student>
和一个 Serializer<ClassSchedule>
)。
对于序列化过程,我不得不说 StringTokenizer 是 JDK 1 的遗留类,其自身的 javadoc 不鼓励使用它:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.
如果您想要序列化可能与 ClassEnrollment 不同的类的对象,那么能够区分所使用的类会很好。有很多方法可以做到这一点,正如一位评论者所说,json 序列化效果非常好。
关于Java-StringTokenizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43139459/
免责声明:我昨天才学会如何做到这一点,我很绝望 我有 3 个类(class)(Student、ClassSchedule、ClassEnrolment) public class ClassEnrol
我正在创建一个程序,它对 boolean 逻辑表达式进行标记并返回标记的字符串数组。以下是我的代码: public static String[] tokenize(String s) { S
这个问题在这里已经有了答案: StringTokenizer method equivalence (2 个回答) 关闭9年前。 我对 stringtokenizer 的 hasmoreelement
我创建了一个读取这样的文件集的方法(//...是注释,忽略它们): 5 // n jobs 2 // n tools 1 4 5 6 2 1 5 4 2 3 矩阵代表每项工作使用的工具,但在这里并不重
String a ="the STRING TOKENIZER CLASS ALLOWS an APPLICATION to BREAK a STRING into TOKENS. "; Strin
我有以下代码,它将标记字符串以创建对象列表: import java.util.StringTokenizer; public class TestStringTokenizer { priv
嗨,我正在尝试使用 java 中的 StringTokeniser 对文本文件进行标记。但问题是它只需要该行的最后一个词。需要的帮助很少。此示例代码是映射缩减函数的一部分。 String profil
我正在尝试使用 stringTokenizer 方法来读取以以下格式存储在文件中的二维数组.. 1 1 1 1 代码是... BufferedReader in = new BufferedReade
我试图从文档中仅提取小写字母数字字符: String delim = "abcdefghijklmnopqrstuvwxyz0123456789"; StringTokenizer strtok =
因此,我在分配时遇到了麻烦,我需要根据给定的参数,使用 stringtokenizer 构造和方法返回字符串的第一个或第二个标记。 EX: "3+5", 2. 其返回应为 5。现在我到目前为止所拥有的
我必须标记以下字符串 12/12/2010:{content1:[{xyz,abc}],13/12/2010:{content2:[{xyz,abc},{content3:[{aa,bb}]}] 如果
为什么 hasMoreElements 和 hasMoreTokens 返回相同的值? 最佳答案 来自 hasMoreElements() 的 javadoc /** * Returns the sa
我有这段代码来解析 url 字符串,例如“?var=val”但是当“search”只是“var=val”时,此代码失败,如何使“var=val”也能工作? StringTokenizer st
我在使用 StringTokenizer 将几行文本分解为单独的标记时遇到问题。输入的文字为 3 monkeys 但是,StringTokenizer 显然将其解释为“3monkeys”。我需要它是“
我已经编写了一个 Worker 类和 Worker 的驱动程序类..我的工作类编译正常并显示所需的输出..但是在数组和 StringTokenizer 中我面临着主要问题......并且在 TestW
我正在尝试提取文本文件中的文件名。目前,我正在使用标记器。不知何故,并非所有文件名都被正确提取。 这是我的代码: list = sc.nextLine(); token = new StringTok
Java。所以我想输入一个整数数组,然后使用 StringTokenizer 打印出最大值。我知道如何使用整数执行此操作,但是当我尝试使用数组执行此操作时,String to int 命令 (Inte
我有两个文件,名为“ride.in”和“ride.out”。 “ride.in”文件包含两行,一行包含字符串“COMBO”,另一行包含字符串“ADEFGA”。正如我所说,每个字符串都位于单独的行上,因
我试图使用 StringTokenizer 将逗号设置为文件中各行的分隔符,每行由邮政编码和城市组成(例如 01221,华盛顿特区),但我不希望第二个逗号是分隔符,因为它是城市名称的一部分。我有 2
我最近在大学进行了一次java小类测试,我需要帮助。 我有一个名为“Products”的对象,它采用(String、double、int)作为参数。 我创建了一个ArrayList ArrayList
我是一名优秀的程序员,十分优秀!