rank 0.1.1 rank: ^0.1.1 copied to clipboard
A list ordering system made in Dart that helps to implement a string index to reorder a list or implement linked lists.
Rank #
A Dart package that helps to implement a string index.
Overview #
Before: #
class Element {
const Element(..., this.position);
...
final int position; // 4
}
With a order number based ranking system, re-ordering a element of a list may require updating all elements of the list, which is O(n).
element | position |
---|---|
... | ... |
apple | 3 |
from _ to here | Oh ho! No room between 3 and 4. |
pear | 4 |
raspberry | 5 |
Well, let's try adding zeros.
element | position |
---|---|
... | ... |
apple | 300 |
from _ to here | Now, you can add 99 elements before changing anything. |
pear | 400 |
raspberry | 500 |
What if we don't use numbers?
With rank
#
class Element {
const Element(..., this.rank);
...
final String rank; // knar
}
Using a string-based range, this is done with O(1). All you have to do is to update the rank field of the reordered element.
element | rank |
---|---|
... | ... |
apple | kra |
a sweet fruit added | kran |
pear | krb |
raspberry | krc |
Then, to get your sorted list you could perform this query in your database:
SELECT * FROM "_" ORDER BY "rank";
Usage #
First, add the plugin rank
to your pubspec.yaml
file:
dependencies:
rank: ^0.1.1
Import rank
in files that it will be used:
import 'package:rank/rank.dart';
Next, you must initialize the plugin:
Rank rank = Rank();
To get a rank use generate
sweetFruitRank = rank.generate(previous: appleRank, next: pearRank);
Issues #
Please file any issues, bugs or feature request as an issue on our GitHub page.
Contributing #
If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature or you'd like an easier or better way to do something), consider opening a pull request.