-4

你更倾向哪个?

我想在java中制作一个有限自动机;使用向量或集合更有效吗?

4

5 回答 5

3

Vector 是一个类。Set 是一个接口。如果您不做需要线程安全的事情,我无论如何都会使用 ArrayList 而不是 Vector。或者一个标准数组,如果它不会被调整大小。

不过,这实际上取决于您的应用程序。具体来说,Sets 不允许重复元素,而 Arrays (Arraylists, Vectors) 允许。

我个人会使用数组,除非它需要具有某种特殊功能(调整大小、没有重复元素等)

于 2010-07-03T01:31:32.380 回答
1

AVector和 aSet是两种不同的数据结构;它们不能出于相同目的互换。

  • AVector包含按定义顺序的元素,并且可以包含重复项(它是一个列表)。
  • ASet没有固有的顺序并且不能包含重复项(它是一个袋子,其中的元素没有排序)。

Which you should use totally depends on how you design and implement your application; without knowing how you did that, it's not possible to say whether you should use a Vector or a Set.

Note: class java.util.Vector is a legacy collection class, you should really use java.util.ArrayList instead.

于 2010-07-03T06:19:29.107 回答
0

集合在插入和删除方面效率更高,而向量执行这些操作的速度较慢。但是,您不能像在向量中那样将元素存储在您选择的索引处。

查找在向量中是最快的,而在集合中它们可能会慢一点。

如果您的数据是恒定的,则应该使用向量。如果你会经常改变,你应该去一套。

于 2010-07-03T01:30:44.257 回答
0

我宁愿使用列表实现而不是向量。该向量是线程安全的,但因此会带来一些开销。List 不是线程安全的,但您始终可以同步每次调用以添加、删除和获取元素。

如果你试图让你的元素以特定的顺序排列,那么这个集合会有一些奇怪的行为,就像 casablanca 所说的那样。此外,该集合将照此执行,并且绝不允许您在需要时重复元素。

两者都用于不同类型的活动:向量和列表都用于相同的任务,实现不同。当您需要它像一个集合一样工作时,该集合仅适用于这种情况。

于 2010-07-03T02:40:05.523 回答
0

我认为 Set 更适用于实现有限自动机。例如,您应该使用 Set 来保证没有重复的元素。根据自动机定义,您有一组状态、一组符号和一组可接受的状态,因此 Set 可以满足您的要求。

于 2010-07-03T02:43:03.347 回答