Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中用于访问/修改的最快数据结构_Java_Performance_Data Structures - Fatal编程技术网

Java中用于访问/修改的最快数据结构

Java中用于访问/修改的最快数据结构,java,performance,data-structures,Java,Performance,Data Structures,大家好,飞越者 我正在编写一个项目,当时我在想,如果我必须访问/编辑大量数据,哪种数据结构最快,哪种性能最好 让我举例说明。 我有一个名为User的类和一个类事件。一个用户可以有许多事件。到目前为止,我使用ArrayList实现了这种情况: public class User{ ArrayList<Event> events; public void process(){ } ... } public class Event{ event da

大家好,飞越者

我正在编写一个项目,当时我在想,如果我必须访问/编辑大量数据,哪种数据结构最快,哪种性能最好

让我举例说明。 我有一个名为User的类和一个类事件。一个用户可以有许多事件。到目前为止,我使用ArrayList实现了这种情况:

public class User{
    ArrayList<Event> events;
    public void process(){
    }
    ...
}
public class Event{
    event data like event time etc.
}
因为我有很多用户,每个用户都可能有数千个事件,而且,我必须用process方法访问用户的每个事件,我认为使用HashMaps等结构是没有帮助的,如果我错了,请告诉我。 然而,很明显,有了这么多的元素,就需要良好的性能

那么,您认为处理事件的最快数据结构是什么

多谢各位


Marco.

这听起来更适合数据库,尤其是当您需要持久性和/或您的数据可能无法放入计算机的主内存时

但是,如果您坚持在自己的代码中这样做,那么您可能需要查看该类。它允许以恒定的即O1复杂性直接访问其元素,同时还结合内部链表以允许对所有元素进行快速迭代

当然,HashMap结构是否有用取决于您想做什么。例如,如果您希望基于某种标识符搜索事件,那么HashMap是理想的选择

另一方面,如果您只需要根据事件的插入顺序来访问事件,那么您就不能做得比更好,因为它支持以恒定的复杂性对其内容进行索引访问。如果您只需要在队列或堆栈中处理它们,Java提供了一些您可能感兴趣的接口实现


最后,如果您想随机插入密钥并让底层结构自行排序,您可能会发现该类很有用。

这听起来更适合数据库,尤其是当您需要持久性和/或您的数据可能无法放入计算机的主内存时

但是,如果您坚持在自己的代码中这样做,那么您可能需要查看该类。它允许以恒定的即O1复杂性直接访问其元素,同时还结合内部链表以允许对所有元素进行快速迭代

当然,HashMap结构是否有用取决于您想做什么。例如,如果您希望基于某种标识符搜索事件,那么HashMap是理想的选择

另一方面,如果您只需要根据事件的插入顺序来访问事件,那么您就不能做得比更好,因为它支持以恒定的复杂性对其内容进行索引访问。如果您只需要在队列或堆栈中处理它们,Java提供了一些您可能感兴趣的接口实现

最后,如果您想随机插入密钥并让底层结构自行排序,您可能会发现该类很有用。

有两件事:

1-在当前场景中,如果并发用户不是关注点,那么您可以很容易地选择arraylist作为其更快更简单的数据结构;如果并发用户是关注点,那么您可以很容易地选择vector来存储事件

2-您可以使用队列DS,它将帮助您进行动态操作,如插入/删除,这比arraylist和vecotr更快,因为它使用迭代器

我希望有帮助。

有两件事:

1-在当前场景中,如果并发用户不是关注点,那么您可以很容易地选择arraylist作为其更快更简单的数据结构;如果并发用户是关注点,那么您可以很容易地选择vector来存储事件

2-您可以使用队列DS,它将帮助您进行动态操作,如插入/删除,这比arraylist和vecotr更快,因为它使用迭代器


我希望它能有所帮助。

如果您的数据适合主内存,那么最好的解决方案就是java集合和 普通阵列取决于对随机访问、顺序性、持久性更改等的需求。如果您的数据增长超过单个系统内存,您将使用一些可群集的无sql解决方案获得更好的性能。请再次选择正确的工具
取决于您喜欢如何处理数据

如果您的数据适合主内存,那么最好的解决方案是java集合和 普通阵列取决于对随机访问、顺序性、持久性更改等的需求。如果您的数据增长超过单个系统内存,您将使用一些可群集的无sql解决方案获得更好的性能。请再次选择正确的工具
取决于您对数据的处理方式

取决于您希望如何处理事件。秩序重要吗?如果是这样的话,它是FIFO还是LIFO数据结构?我宁愿把它委托给一个数据库我同意LeleDumbo,如果你有millio的话
它只是请求一个数据库的N个用户…@m0skit0不,我访问数据的顺序并不重要,因为我必须访问每个数据库event@MarcoGalassi:您需要随机访问这些事件吗?例如,给我UID为0x6969的事件?或者你只是把它们当作一堆未分类的东西吗?这取决于你想如何处理事件。秩序重要吗?如果是,是FIFO还是LIFO数据结构?我宁愿将其委托给一个数据库我同意LeleDumbo,如果你有数百万用户,它只需要一个数据库…@m0skit0不,我访问数据的顺序并不重要,因为我必须访问每个数据库event@MarcoGalassi:您需要随机访问这些事件吗?例如,给我UID为0x6969的事件?或者你只是把它们当作一堆未排序的数据吗?我不认为使用数据库可以解决性能问题。如果我使用数据库,难道我没有因为需要从数据库检索数据而产生额外的性能问题吗?我的意思是,如果我访问我机器上的数据而不是数据库,它应该会更快。是吗?@MarcoGalassi:1。您可以始终在同一台主机上运行数据库。2.您确定您的数据将始终适合可用内存吗?如果你打算使用磁盘,最好让数据库来做——它会比你做得好得多。3.您的持久性和一致性要求是什么?你需要交易吗?当程序终止时会发生什么。如果它崩溃了怎么办?@MarcoGalassi:我忘记了最重要的论点:在实际试用应用程序之前,您似乎假设存在性能问题。过早优化是万恶之母-在探查器告诉您之前,不要优化任何东西…我不认为使用数据库可以解决性能问题。如果我使用数据库,是否会因为需要从数据库检索数据而产生额外的性能问题?我的意思是,如果我访问我机器上的数据而不是数据库,它应该会更快。是吗?@MarcoGalassi:1。您可以始终在同一台主机上运行数据库。2.您确定您的数据将始终适合可用内存吗?如果你打算使用磁盘,最好让数据库来做——它会比你做得好得多。3.您的持久性和一致性要求是什么?你需要交易吗?当程序终止时会发生什么。如果它崩溃了怎么办?@MarcoGalassi:我忘记了最重要的论点:在实际试用应用程序之前,您似乎假设存在性能问题。过早的优化是万恶之母-在分析器告诉你之前不要优化任何东西。。。