List
List in Ruby.
List is a class of wrapped singly-linked list.
It's can use same as Array. But processing speed is different.
Usage
All interface is same with Array class.
> Array.methods - List.methods
=> []
> Array.new.methods - List.new.methods
=> []
List can use instead of Array.
require 'list'
list = List.new
list.push 1,2,3
list.pop
list[0,2]
list[0,1] = 5
list.each do |i|
puts i
end
puts List[1,2,3].map{|i| i * i}.inject(:+)
+---------+ +->+---------+ +->+---------+
| value | | | value | | | value |
| next |--+ | next |--+ | next |
+---------+ +---------+ +---------+
But, List is not Array.
list = List[1,2,3]
list.ring.each do |i|
puts i
end
+->+---------+ +->+---------+ +->+---------+
| | value | | | value | | | value |
| | next |--+ | next |--+ | next |--+
| +---------+ +---------+ +---------+ |
+-----------------------------------------------+
Feature
- List have all same method and behavior with Array.
- include
Enumeratable
- insert and delete is more faster than Array.
- Can use MRI at version 1.9.3, 2.0.0 and 2.1.0.
Other API
List#ring
: experimental method for expressing the ring buffer.
List#ring!
: change self to ring buffer.
List#ring?
: check self to ring buffer.
Enumeratable#to_list
: all class of included Enumeratable, can convert to List instance
List#to_list
: return self.
List#to_a
: change from List to Array.
Installation
Add this line to your application's Gemfile:
gem 'list'
And then execute:
$ bundle
Or install it yourself as:
$ gem install list
Testing
This library is tested using Travis.
- MRI 2.0.0
- MRI 2.1.6
- MRI 2.2.2
Contributing
- Fork it ( http://github.com/ksss/list/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Other
RDoc for Array
benchmark script result
wikipedia