我刚开始使用Java,所以我正在转录一些Ruby的内容。我有这样一个Ruby函数,它生成类似于IPv6地址的内容:
def generate_ip()
list = ["a", "b", "c", "d", "e", "f", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
address = ""
8.times do
4.times do
address << list.shuffle[5]
end
address << ":"
end
return address[0..-2].to_sym
end
这个方法只需要一个字符串数组,然后重复地对它们进行混乱,每次选择第五个元素来构造返回的字符串。
据我所知,Java中没有用于字符串数组的“霉运()”方法,因此我想编写自己的字符串数组。但后来我开始陷入子问题的泥潭,比如:
所以,在我深入到子问题领域,问50个不同的问题之前,我想我应该问如何解决最重要的问题。有简单的方法将上面的Ruby代码转换成Java吗?
FWIW,我正在进行的“洗牌”方法如下。我只是循环array.length时间,每次从旧数组复制/删除一个随机元素到一个新数组。
public ArrayList<String> shuffle(ArrayList<String> array) {
Random generator = new Random();
ArrayList<String> shuffled = new ArrayList<String>();
for (int i = 0; i > array.size(); i++) {
int index = generator.nextInt(array.size());
String popped = array.get(index);
array.remove(index);
shuffled.add(popped);
}
return shuffled;
}
发布于 2012-12-17 03:50:39
如果创建List
( ArrayList
或LinkedList
),则可以使用Collections.shuffle()
ArrayList和LinkedList都是List接口的实现。我怀疑这两种方法都可以满足您的需要,尽管ArrayList更好(由数组支持)。这是Java列表教程。
在Java中,数组的长度是固定的,而List
在大小上是可变的,因此List
在一般情况下更适合您进行上述转换。若要创建具有给定一组起始元素的列表,请参见Arrays.asList()。
List stooges = Arrays.asList("Larry", "Moe", "Curly");
发布于 2012-12-17 03:50:31
Collections.shuffle(List list, Random rnd)
内置库可在java中使用。
使用指定的随机性源随机排列指定的列表。假设随机性的来源是公平的,所有的排列都以相同的可能性发生。
https://stackoverflow.com/questions/13913600
复制相似问题