-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathList.java
More file actions
82 lines (70 loc) · 2.27 KB
/
List.java
File metadata and controls
82 lines (70 loc) · 2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package ssj.algorithm;
import com.google.common.base.Preconditions;
import ssj.algorithm.collections.HashSet;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Objects;
/**
* Created by shenshijun on 15/2/1.
*/
public interface List<T> extends Collection<T> {
public T get(int index);
public void set(int index, T ele);
public void remove(int index);
public default void delete(T ele) {
Preconditions.checkNotNull(ele);
for (Iterator<T> iterator = iterator(); iterator.hasNext(); ) {
if (Objects.equals(iterator.next(), ele)) {
iterator.remove();
}
}
}
/**
* 去除列表中重复的元素
*
* @return
*/
public default int removeDuplicate() {
int result = 0;
HashSet<T> set = new HashSet<>(100);
for (Iterator<T> iterator = iterator(); iterator.hasNext(); ) {
if (set.contains(iterator.next())) {
iterator.remove();
result++;
}
}
return result;
}
public default T getReverse(int index) {
int normal_index = size() - index - 1;
Preconditions.checkPositionIndex(normal_index, size());
return get(normal_index);
}
List<T> partition(T par_ele, Comparator<? super T> comparator);
public default Set<T> chainEle() {
HashSet<T> result = new HashSet<>();
HashMap<T, Integer> count_eles = new HashMap<>();
for (T ele : this) {
if (count_eles.get(ele) == null) {
count_eles.put(ele, 0);
}
count_eles.put(ele, count_eles.get(ele));
}
count_eles.entrySet().stream().filter(count -> count.getValue().compareTo(2) >= 0).forEach(count -> {
result.add(count.getKey());
});
return result;
}
Iterator<T> reverse();
public default boolean isPalindromic() {
Iterator<T> default_iterator = iterator();
Iterator<T> reversed_iterator = reverse();
while (default_iterator.hasNext() && reversed_iterator.hasNext()) {
if (!default_iterator.next().equals(reversed_iterator.next())) {
return false;
}
}
return true;
}
}