你更喜欢哪一个?
我想在java中创建有限自动机;使用vector或set更有效吗?
答案 0 :(得分:3)
Vector是一个类。 Set是一个接口。如果你没有做一些需要线程安全的东西,我会使用ArrayList而不是Vector。或者标准数组,如果它不会调整大小。
这实际上取决于你的申请。具体来说,集合不允许重复元素,而数组(Arraylists,Vectors)可以。
我个人会使用数组,除非它需要某种特殊功能(调整大小,没有重复的元素等)。
答案 1 :(得分:1)
Vector
和Set
是两种不同的数据结构;它们不能用于同一目的。
Vector
包含定义顺序的元素,可以包含重复项(它是一个列表)。Set
没有固有的顺序且不能包含重复项(它是一个包,其中没有订购元素)。您应该完全使用它取决于您设计和实施应用程序的方式;如果不知道你是怎么做的,就不可能说你是应该使用Vector
还是Set
。
注意:类java.util.Vector
是遗留的集合类,您应该使用java.util.ArrayList
代替。
答案 2 :(得分:0)
一个集合在插入和删除时更有效,而向量则更慢。但是,您无法像在矢量中那样将元素存储在您选择的索引处。
在向量中查找速度最快,而在集合中查找速度稍慢。
如果您的数据是常量,则应使用向量。如果你经常更换,你应该使用一套。
答案 3 :(得分:0)
我宁愿使用列表实现而不是向量。该向量是线程安全的,但由于这个原因,它带来了一些开销。 List不是线程安全的,但您始终可以同步每个调用以添加,删除和获取元素。
如果你想要按特定顺序获取你的元素,那么这个集会有一些奇怪的行为,就像卡萨布兰卡所说的那样。此外,该集合将起到这样的作用,并且永远不会允许您在需要时重复元素。
两者都用于不同类型的活动:向量和列表都用于相同的任务,实现不同。该集合仅适用于需要它像集合一样运行的情况。
答案 4 :(得分:0)
我认为Set更适用于实现有限自动机。例如,您应该使用Set来保证没有重复的元素。通过Automata定义,您有一组状态,一组符号和一组接受状态,因此Set可以满足您的要求。