ts-list
Version:
Typescript implementation for List with ArrayList
36 lines (30 loc) • 1.14 kB
text/typescript
import { List, Comparable, ArrayList } from "./list";
export interface Searchable<T> {
contains(other: T): boolean;
containsSensitive(other: T): boolean;
}
export interface SearchableList<T extends Comparable<T> & Searchable<T>> extends List<T> {
search(item: T): List<T>;
searchSensitive(item: T, sensitive: boolean): List<T>;
}
export class SearchableArrayList<T extends Comparable<T> & Searchable<T>> extends ArrayList<T> implements SearchableList<T>{
constructor() {
super();
}
searchSensitive(item: T, sensitive: boolean): List<T> {
if (item != null) {
let sub: SearchableArrayList<T> = new SearchableArrayList<T>();
for (let i = 0; i < super.size(); i++) {
let temp: T = super.get(i);
if ((!sensitive && temp.contains(item)) || (sensitive && temp.containsSensitive(item))) {
sub.add(temp);
}
}
return sub;
}
return this;
}
search(item: T): List<T> {
return this.searchSensitive(item, false);
}
}