UNPKG

ts-list

Version:

Typescript implementation for List with ArrayList

36 lines (30 loc) 1.14 kB
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); } }