私は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
このメソッドは、単純に文字列の配列を取得し、それらを繰り返しごちゃ混ぜにして、返される文字列を作成するたびに5番目の要素を選択します。
私の知る限り、Javaには文字列配列用の「shuffle()」メソッドがないので、自分で作成することにしました。しかし、それから私は次のようなサブ問題に完全に夢中になり始めました:
どうやら、文字列配列からアイテムを削除する組み込みの方法はありませんが、これは奇妙に思えます-それは正しいですか?この機能に対する応答が10行のコードブロックである他のいくつかのSO投稿を見ました。それで、私はArrayListsを使用することにしました。ドキュメントによると、それらにはsize()、get()、remove()などの適切なメソッドがありますが...
...リテラルを使用してそれらをインスタンス化する方法、または単一のメソッド呼び出しで複数のアイテムを追加する方法を見つけられませんでした。私が見るすべてのチュートリアル(公式のOracle Javaチュートリアルを含む)は、ArrayList.add()への複数の呼び出しを使用します。それはそれをする方法ではありえませんね?
等
それで、私がサブ問題の土地にスパイラルダウンして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;
}