浏览 6907 次
锁定老帖子 主题:Array的排序方法sort,用法注意点
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-29
最后修改:2008-11-29
Returns a new array created by sorting self. Comparisons for the sort will be done using the <=> operator or using an optional code block. The block implements a comparison between a and b, returning -1, 0, or +1. See also Enumerable#sort_by. a = [ "d", "a", "e", "c", "b" ] a.sort #=> ["a", "b", "c", "d", "e"] a.sort {|x,y| y <=> x } #=> ["e", "d", "c", "b", "a"] 以上是ruby api的说明; 我在模拟一个双色球号码生成器的case时候 def create_num @nums = Array.new #先选择6个红球/33球 while @nums.length < 6 @num = rand(32) + 1 unless @nums.delete(@num) @nums << @num end end #前面6个排序 @nums.sort #后选择1个篮球/16球 @nums << rand(15) + 1 end p create_num 我以为排序后的原数组对象会想java工具类Arrays.sort一样排一下就OK了. public class TestCase { final static String[] a = new String[]{"a", "g", "d", "k", "f"}; public static void main(String[] args) { String[] b = new String[]{"a", "f", "d", "l", "c"}; Arrays.sort(b); for(String s : b) { System.out.println(s); } } } 以上ruby代码输出是没有排序的 最后修改为 def create_num @nums = Array.new #先选择6个红球/33球 while @nums.length < 6 @num = rand(32) + 1 unless @nums.delete(@num) @nums << @num end end #前面6个排序 # @nums.sort #或者用这个方法sort! @nums.sort! #后选择1个篮球/16球 @nums.sort << rand(15) + 1 end p create_num 这是需要注意的一点 可能动态代码都不支持直接改变其引用吧 ps================================== 结果 gigix指点 可以用sort!方法 不太用心的原因 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-29
最后修改:2008-11-29
sort!
查文档先 |
|
返回顶楼 | |
发表时间:2008-11-29
gigix 写道 sort! 查文档先 不好意思 这个方法可以 搞错了 |
|
返回顶楼 | |