Java:ArrayList、字符串操作和解析

Java:ArrayList、字符串操作和解析,java,oop,parsing,arraylist,Java,Oop,Parsing,Arraylist,我正在写一个应用程序,存储书籍、期刊、网站等的参考资料。我的意思是我已经做了很多 我想要的是关于实现上述规范的最佳方式的建议 我应该使用什么格式的文本文件来存储库?不是文件类型,而是格式。我现在使用的是简单的文本文件。但计划实施以下格式 <book><Art of Human Hacking><New York><2011><1> <journal><Achieving Maximum Speed In 802.11n

我正在写一个应用程序,存储书籍、期刊、网站等的参考资料。我的意思是我已经做了很多

我想要的是关于实现上述规范的最佳方式的建议

我应该使用什么格式的文本文件来存储库?不是文件类型,而是格式。我现在使用的是简单的文本文件。但计划实施以下格式

<book><Art of Human Hacking><New York><2011><1>
<journal><Achieving Maximum Speed In 802.11n><London><2009><260-265>
我使用了
StringTokenizer
,无法区分空格。我该如何解决这个问题


我已经实现了所有功能,包括列出所有、列出唯一、搜索、编辑、删除和添加。但是一切都是对没有空格的内容进行的。

除非项目禁止,否则您应该使用现有的序列化程序,而不是编写自己的序列化程序

为了兼容性和人类可读性,CSV将是您的最佳选择。使用现有的CSV解析器来获得正确的转义(自己编写并不是那么难,但足够难保证使用现有的解析器来避免bug)。谷歌出现了:

如果人工编辑不是优先事项,那么JSON也是一种很好的格式(它是人类可读的,但不像CSV那么简单,例如,它不会显示在excel中)


然后是二进制协议,比如本机Java序列化,甚至是Google协议缓冲区。这些序列化程序可能会更快,但显然会失去查看数据存储的能力,并且可能会使调试复杂化。

除非项目禁止,否则应该使用现有的序列化程序,而不是编写自己的序列化程序

为了兼容性和人类可读性,CSV将是您的最佳选择。使用现有的CSV解析器来获得正确的转义(自己编写并不是那么难,但足够难保证使用现有的解析器来避免bug)。谷歌出现了:

如果人工编辑不是优先事项,那么JSON也是一种很好的格式(它是人类可读的,但不像CSV那么简单,例如,它不会显示在excel中)


然后是二进制协议,比如本机Java序列化,甚至是Google协议缓冲区。这些可能会更快,但显然会失去查看数据存储的能力,并且可能会使调试复杂化。

我非常喜欢JSON。Java中肯定会有JSON的现有解析器。它比xml更短,解析速度更快。我非常喜欢JSON。Java中肯定会有JSON的现有解析器。它比xml更短,解析速度更快。非常感谢,但是,将序列化程序与CSV一起使用会使文本操作更简单吗?由于我将需要进行操作,您能否为我提供任何示例的链接,其中序列化程序与数组列表一起使用以操作文本文件。我使用序列化程序作为将对象转换为可写格式的通用术语。如果使用我链接到的CSV库,那么根据我所知,对于读取,您将创建一个CSVReader对象(将文件名作为参数传递),然后调用readRecord()来推进行,并使用不同的get()方法来获取不同列的值(如果设置头名称,则还可以通过头名称获取)。例如:while(csv.readRecord()){myArray.add(csv.get(0));}将第一列中的每个条目添加到数组中(通常会创建包含每个列的子对象)。非常感谢,但是,将序列化程序与csv一起使用会使文本操作变得简单吗?由于我将需要进行操作,您能否为我提供任何示例的链接,其中序列化程序与数组列表一起使用以操作文本文件。我使用序列化程序作为将对象转换为可写格式的通用术语。如果使用我链接到的CSV库,那么根据我所知,对于读取,您将创建一个CSVReader对象(将文件名作为参数传递),然后调用readRecord()来推进行,并使用不同的get()方法来获取不同列的值(如果设置头名称,则还可以通过头名称获取)。例如:while(csv.readRecord()){myArray.add(csv.get(0));}将第一列中的每个条目添加到数组中(通常会创建包含每个列的子对象)。
[[Art of Human Hacking,New York,2011,1][Achieving Maximum Speed In 802.11n,London,2009,260-265]]