小编use*_*198的帖子

JAXB编组具有相同名称的元素的变量列表

根据标题,我有一个我需要解组的XML文件:

<?xml version="1.0"?>
<root>
    <wrap>
        <Element>something1</Element>
        <Element>something2</Element>
        <Element>something3</Element>
    </wrap>
</root>
Run Code Online (Sandbox Code Playgroud)

"wrap"只是一个包装器,但"元素"的数量会有所不同.

我有两个类来为JAXB提供便利:

换类:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "root")
public class Wrap {
    @XmlElementWrapper(name = "wrap")
    @XmlElement(name = "Element")
    private List<Element> elementList = new ArrayList<>();

    public Wrap() {}

    public Wrap(List<Element> list) {
        this.elementList = list;
    }

    public void addElement(Element element) {
        this.elementList.add(element);
    }

    public List<Element> getWrap() {
        return this.elementList;
    }

    public void setWrap(List<Element> wrap) {
        this.elementList = wrap;
    }
}
Run Code Online (Sandbox Code Playgroud)

元素类:

@XmlRootElement(name = "Element")
public class Element {

    private String Element;

    public …
Run Code Online (Sandbox Code Playgroud)

java xml annotations jaxb

15
推荐指数
1
解决办法
2万
查看次数

Java - 如何有效地存储大量的String数组

我正在尝试使用Java高效加载大型CSV格式的文件(通常为200-600mb)(内存更少,访问速度更快).目前,该程序正在使用字符串数组列表.之前使用Lua程序处理此操作,该程序使用每个CSV行的表和用于保存每个"行"表的表.

以下是内存差异和加载时间的示例:

  • CSV文件 - 232mb
  • Lua - 内存中549mb - 加载157秒
  • Java - 内存中1,378mb - 加载12秒

如果我没记错的话,Lua表中的重复项存在作为对实际值的引用.我怀疑在Java示例中,List正在保存每个重复值的单独副本,这可能与更大的内存使用量有关.

以下是CSV文件中数据的一些背景知识:

  • 每个字段由一个字符串组成
  • 每行内的特定字段可以包括一组字符串中的一个(例如,字段3可以是"红色","绿色"或"蓝色").
  • 内容中有许多重复的字符串.

以下是加载数据可能需要的一些示例:

  • 搜索所有尝试与给定String匹配的字符串并返回匹配的字符串
  • 在GUI表中显示匹配项(可通过字段排序).
  • 更改或替换字符串.

我的问题 - 是否有一个集合需要更少的内存来保存数据但仍然提供了轻松快速地搜索/排序数据的功能?

java csv lua

5
推荐指数
1
解决办法
5759
查看次数

标签 统计

java ×2

annotations ×1

csv ×1

jaxb ×1

lua ×1

xml ×1