Rev | Line | |
---|
[285] | 1 | from typing import TypeVar, Collection
|
---|
| 2 | from tudelft.utilities.immutablelist.ImmutableList import ImmutableList
|
---|
| 3 |
|
---|
| 4 |
|
---|
| 5 | E = TypeVar('E')
|
---|
| 6 |
|
---|
| 7 | class FixedList (ImmutableList[E]):
|
---|
| 8 | '''
|
---|
| 9 | a list with a fixed (finite, typically small) number of elements.
|
---|
| 10 |
|
---|
| 11 | @param <T> type of the elements
|
---|
| 12 | '''
|
---|
| 13 |
|
---|
[975] | 14 | def __init__(self, lst:Collection[E]=[] ):
|
---|
[285] | 15 | '''
|
---|
| 16 | Copies elements of given list into an immutable list. SO the resulting list
|
---|
| 17 | is really immutable, although the components may still be mutable.
|
---|
| 18 |
|
---|
| 19 | @param lst the source list.
|
---|
| 20 | '''
|
---|
| 21 | self._list = list(lst)
|
---|
| 22 |
|
---|
| 23 | def FixedList(self) :
|
---|
| 24 | self._list = []
|
---|
| 25 |
|
---|
| 26 |
|
---|
| 27 | def __iter__(self):
|
---|
| 28 | return iter(self._list)
|
---|
| 29 |
|
---|
| 30 | def get(self, index:int) -> E:
|
---|
| 31 | return self._list[index]
|
---|
| 32 |
|
---|
| 33 | def size(self) ->int:
|
---|
| 34 | return len(self._list)
|
---|
| 35 |
|
---|
| 36 | def __repr__(self):
|
---|
| 37 | return repr(self._list)
|
---|
| 38 |
|
---|
| 39 | def __hash__(self):
|
---|
| 40 | return hash(tuple(self._list))
|
---|
| 41 |
|
---|
| 42 | def __eq__(self, other):
|
---|
| 43 | return isinstance(other, self.__class__) \
|
---|
| 44 | and self._list==other._list
|
---|
| 45 |
|
---|
| 46 | def contains(self, value) -> bool:
|
---|
| 47 | '''
|
---|
| 48 | @param value value to look for
|
---|
| 49 | @return Returns true iff this list contains the specified value. More
|
---|
| 50 | formally, returns true if and only if this list contains at least one
|
---|
| 51 | element e such that (o==null ? e==null : o.equals(e)).
|
---|
| 52 | '''
|
---|
| 53 | return value in self._list
|
---|
| 54 |
|
---|
Note:
See
TracBrowser
for help on using the repository browser.