|
15 | 15 | */
|
16 | 16 | package io.reactivex.rxjavafx.sources;
|
17 | 17 |
|
| 18 | +import java.util.Objects; |
| 19 | + |
18 | 20 | /**
|
19 | 21 | * Holds an ADDED, REMOVED, or UPDATED flag with the associated value
|
20 | 22 | * @param <T>
|
21 | 23 | */
|
22 | 24 | public final class ListChange<T> {
|
23 | 25 | private final T value;
|
24 | 26 | private final Flag flag;
|
| 27 | + private final int index; |
25 | 28 |
|
26 |
| - private ListChange(T value, Flag flag) { |
| 29 | + private ListChange(T value, Flag flag, int index) { |
27 | 30 | this.value = value;
|
28 | 31 | this.flag = flag;
|
| 32 | + this.index = index; |
29 | 33 | }
|
30 |
| - public static <T> ListChange<T> of(T value, Flag flag) { |
31 |
| - return new ListChange<>(value, flag); |
| 34 | + public static <T> ListChange<T> of(T value, Flag flag, int index) { |
| 35 | + return new ListChange<>(value, flag, index); |
32 | 36 | }
|
33 | 37 | public T getValue() {
|
34 | 38 | return value;
|
35 | 39 | }
|
36 | 40 | public Flag getFlag() {
|
37 | 41 | return flag;
|
38 | 42 | }
|
| 43 | + public int getIndex() { |
| 44 | + return index; |
| 45 | + } |
| 46 | + |
39 | 47 | @Override
|
40 | 48 | public String toString() {
|
41 |
| - return flag + " " + value; |
| 49 | + return flag + " " + value + " " + index; |
| 50 | + } |
| 51 | + |
| 52 | + @Override |
| 53 | + public boolean equals(Object o) { |
| 54 | + if (this == o) return true; |
| 55 | + if (o == null || getClass() != o.getClass()) return false; |
| 56 | + ListChange<?> that = (ListChange<?>) o; |
| 57 | + return index == that.index && |
| 58 | + value.equals(that.value) && |
| 59 | + flag == that.flag; |
| 60 | + } |
| 61 | + |
| 62 | + @Override |
| 63 | + public int hashCode() { |
| 64 | + return Objects.hash(value, flag, index); |
42 | 65 | }
|
43 | 66 | }
|
0 commit comments