抓取数据类列表的随机索引

时间:2013-10-13 02:59:17

标签: java list

好的,我有这个

public static List<DataValue> result = new LinkedList<>();

public static class DataValue {
    protected final String first;
    protected final int second;

    public DataValue(String first, int second) {
        this.first = first;
        this.second = second;
    }
}

添加到列表...

    String first = "bob";
    int second = "50";
    result.add(new DataValue(first, second));

我正在尝试从数据中抓取一个随机字段,显示它,然后将其从列表中删除,以便它不会再次使用

我将如何做到这一点?

我目前试图抓住数据的尝试并不是很顺利

System.out.println(“First:”+ DataValue.result.getFirst());

并尝试过    System.out.println(“First:”+ result.getFirst(DataValue));

我不确定如何抓住它,找不到任何关于它的文章,感谢任何帮助

如果发生任何差异,LinkedList中大约有5000个条目

2 个答案:

答案 0 :(得分:1)

我不太清楚你的问题,但你可以尝试这样的事情

Random randomGenerator;
int randomIndex = randomGenerator.nextInt( result.size() );
DataValue dataValue = result.get( randomIndex );
//... Show the fields ...
result.remove( randomIndex );`

答案 1 :(得分:0)

这个怎么样?

import java.util.LinkedList;
import java.util.List;

public class MyClass {
    public static List<DataValue> result = new LinkedList<DataValue>();

    public static class DataValue {
        protected final String first;
        protected final int second;

        public DataValue(String first, int second) {
            this.first = first;
            this.second = second;
        }

        @Override
        public String toString(){
            return first + " " + second;
        }
    }

    public static void removeAndPrintRandom(){
        int index = (int)(Math.random() * result.size());
        System.out.println(result.remove(index));
    }
}

我刚刚向您展示了这样做的更好方法。您可以根据自己的要求进行编辑和制作。