矢量vs在java中设置

时间:2010-07-03 01:25:42

标签: java vector set finite-automata

你更喜欢哪一个?

我想在java中创建有限自动机;使用vector或set更有效吗?

5 个答案:

答案 0 :(得分:3)

Vector是一个类。 Set是一个接口。如果你没有做一些需要线程安全的东西,我会使用ArrayList而不是Vector。或者标准数组,如果它不会调整大小。

这实际上取决于你的申请。具体来说,集合不允许重复元素,而数组(Arraylists,Vectors)可以。

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

答案 1 :(得分:1)

VectorSet是两种不同的数据结构;它们不能用于同一目的。

  • Vector包含定义顺序的元素,可以包含重复项(它是一个列表)。
  • Set没有固有的顺序且不能包含重复项(它是一个包,其中没有订购元素)。

您应该完全使用它取决于您设计和实施应用程序的方式;如果不知道你是怎么做的,就不可能说你是应该使用Vector还是Set

注意:类java.util.Vector是遗留的集合类,您应该使用java.util.ArrayList代替。

答案 2 :(得分:0)

一个集合在插入和删除时更有效,而向量则更慢。但是,您无法像在矢量中那样将元素存储在您选择的索引处。

在向量中查找速度最快,而在集合中查找速度稍慢。

如果您的数据是常量,则应使用向量。如果你经常更换,你应该使用一套。

答案 3 :(得分:0)

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

如果你想要按特定顺序获取你的元素,那么这个集会有一些奇怪的行为,就像卡萨布兰卡所说的那样。此外,该集合将起到这样的作用,并且永远不会允许您在需要时重复元素。

两者都用于不同类型的活动:向量和列表都用于相同的任务,实现不同。该集合仅适用于需要它像集合一样运行的情况。

答案 4 :(得分:0)

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