0
0

More than 1 year has passed since last update.

【Ruby】Setクラスの使い方

Posted at

Setクラスの使い所があまり理解できませんでしたが、少し掴めた気がしたので使いどころと使い方について簡単にまとめておきます。

Setクラス

Rubyの要素の集合を表したい場合、Setクラスを使用することができます。

集合は重複のないオブジェクトの集まりを指します。要素の間に順序関係はありません。

使い方

setクラスは標準ライブラリのため、requireすることで使用することができます。

以下のように定義して使います。

require 'set'

set1 = Set.new(["Alice", "Bob", "Nick"]) # =>()は省略可能
p set1 #=> <Set: {"Alice", "Bob", "Nick"}>

Set.new()に配列を渡してSetオブジェクトを定義できます。

set2 = ["Jone", "Rian", "Tom"].to_set
p set2 #=> <Set: {"Jone", "Rian", "Tom"}>

to_setメソッドを使用すると、配列からSetオブジェクトを生成することができます。

p Set["Yamada", "Ito"]
 #=> <Set: {"Yamada", "Ito"}>
p Set[40, 10, 10, 20, 30]
 #=> <Set: {40, 10, 20, 30}>

Set[]に直接オブジェクトを定義することで、Setオブジェクトを生成することもできます。この時同じ要素はまとめられていることが確認できます。

使いどころ

Setクラスを使用して集合を生成できることがわかりました。

では、これが何の役に立つのか、です。

Setクラスは、要素数が多い場合で早い処理が必要とされる場面で活躍します。

例えばSetオブジェクトの中身に、任意のオブジェクトが存在しているかを確かめるinclude?メソッドを使用したい場合、できるだけ早く見つけ出したい、、、こんな時に使います。

また、Arrayにも集合機能がありincludeメソッドが存在します。

同じように要素検索を行うことができますが、処理速度で考えるとSetクラスの方が効率よく処理することができるようです。

これについては@an_sonyさんの記事がとても参考になったので引用させていただきます。
https://qiita.com/an_sony/items/708c47d073ad709431d6

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0