Project

list

0.01
No commit activity in last 3 years
No release in over 3 years
List is a class of wrapped singly-linked list
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

 Project Readme

List

List in Ruby.

Build Status

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 # or List[]
list.push 1,2,3
list.pop #=> 3
list[0,2] #=> List[1,2]
list[0,1] = 5
list.each do |i|
  puts i #=> 5,2
end
puts List[1,2,3].map{|i| i * i}.inject(:+) #=> 14
+---------+  +->+---------+  +->+---------+
|  value  |  |  |  value  |  |  |  value  |
|  next   |--+  |  next   |--+  |  next   |
+---------+     +---------+     +---------+

But, List is not Array.

list = List[1,2,3]
list.ring.each do |i|
  puts i # print infinitely 1,2,3,1,2,3,1,2...
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 2.0.0, 2.1.6 and 2.2.2.

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

  1. Fork it ( http://github.com/ksss/list/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Other

RDoc for Array

benchmark script result

wikipedia