본문 바로가기

.주제별

[Ruby] Sort 방법 (Struct - 구조문 이용)

1. 기본 Hash 정렬

         참고] Ordered Hash는 , Hash에 값을 대입시 순서대로 저장을 한다.

                   (여기 참고)
require 'ordered_hash' h = OrderedHash.new(0)
h["1st"] = 5
h["2nd"] = 3
h["3th"] = 7
#Hash의 Value의 내림차순으로 정리하여 배열로 지정
a = Array.new(0)
a = h.sort { |a,b| b[1]<=>a[1] }

[결과]
 a = [["3th",7],["1st",5],["2nd",3] ]
2. Struct Type 정렬
 require "ordered_hash"

h1 = OrderedHash.new(0)
s1 = Struct.new(:name, :zip)

h1["2020"] = s1.new("smith", 100)
h1["1010"] = s1.new("tom", 200)

#key (2020 or 1010) 별로 정렬

h1.sort {|a,b| b[0]<=>a[0]}

#Struct "zip" 별로 정렬

h1.sort {|a,b| b[1].zip<=>a[1].zip}



3. OpenStruct Type정렬
          OpenStruct는, 동적으로 Struct에 멤버을 추가할 수 있는 특징이 있다.
 require "ostruct"

h2 = OrderedHash.new(0)
h2["1010"] = OpenStruct.new(:name => "smith", :zip=>100)
h2["2020"] = OpenStruct.new(:name => "smith", :zip=>100)

#Struct "zip"별로 정렬

h2.sort {|a,b| b[1].zip<=>a[1].zip}