【问题标题】:read random objects from Vector java [duplicate]从Vector java中读取随机对象[重复]
【发布时间】:2017-04-03 15:47:35
【问题描述】:

您好,我正在编写一个 java 程序,我需要在其中随机读取添加到 Vector 中的对象,并且不应该重复。实际上我想通过 Math.random() * Vector.size() 获得一个随机数并且不重复,将随机数保存在数组中或者下次不要再次读取它但猜测必须有一个方法或为此目的的东西...... 我会感谢任何回应

【问题讨论】:

  • 请发布您尝试过的内容。我们没有为您编写代码的习惯。
  • 另外,Vector 在 Java 中是一个过时的集合,除非必须,否则不应使用它。 ArrayList 更可取。
  • 我不想让你给我发代码,但想知道是否有一个类或某种方法可以从向量中读取随机元素而不重复
  • Collections.shuffle(List)

标签: java vector


【解决方案1】:

您可以从1 生成一个序列,直到向量的大小,对其进行随机播放,然后使用这些值从向量中读取元素:

Vector v;
List<Integer> values = new ArrayList<>();
for (int i=0; i < v.size(); ++i) {
    values.add(i);
}
Collections.shuffle(values);

// now read the value in the vector using this random sequence
for (int i=0; i < values.size(); ++i) {
    System.out.println(vector.get(values.get(i)));
}

【讨论】:

    【解决方案2】:

    您可以在读取向量时简单地从向量中删除一个值。

    【讨论】:

    • 是的,但我需要程序之后的元素 :) :(
    • 使用你的矢量副本:)
    • 嗯应该是vector2 = (Vector) vector 1.clone() ?
    • 可以,可以clone()复制,也可以自己复制。但正如@Michael 上面所说,Vector 是一个过时的集合,你最好尝试使用ArrayList 为例。
    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2015-07-15
    • 2020-07-17
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    相关资源
    最近更新 更多