-
Notifications
You must be signed in to change notification settings - Fork 587
/
primitiveBag.stg
142 lines (119 loc) · 3.89 KB
/
primitiveBag.stg
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
import "copyrightAndOthers.stg"
import "primitiveAPI.stg"
targetPath() ::= "org/eclipse/collections/api/bag/primitive"
fileName(primitive) ::= "<primitive.name>Bag"
class(primitive) ::= <<
<body(primitive.type, primitive.name)>
>>
body(type, name) ::= <<
<copyrightAndOthers()>
package org.eclipse.collections.api.bag.primitive;
import java.util.StringJoiner;
import org.eclipse.collections.api.<name>Iterable;
import org.eclipse.collections.api.bag.Bag;
import org.eclipse.collections.api.block.function.primitive.<name>ToObjectFunction;
<if(!primitive.intPrimitive)>import org.eclipse.collections.api.block.predicate.primitive.IntPredicate;<endif>
import org.eclipse.collections.api.block.predicate.primitive.<name>Predicate;
import org.eclipse.collections.api.block.procedure.primitive.<name>Procedure;
import org.eclipse.collections.api.block.procedure.primitive.<name>IntProcedure;
import org.eclipse.collections.api.list.ListIterable;
import org.eclipse.collections.api.tuple.primitive.<name>IntPair;
import org.eclipse.collections.api.set.primitive.<name>Set;
/**
* This file was automatically generated from template file primitiveBag.stg.
*
* @since 3.0.
*/
public interface <name>Bag extends <name>Iterable
{
/**
* The size of the Bag when counting only distinct elements.
*/
int sizeDistinct();
/**
* @since 9.0.
*/
@Override
default <name>Bag tap(<name>Procedure procedure)
{
this.forEach(procedure);
return this;
}
/**
* Returns all elements of the bag that have a number of occurrences that satisfy the predicate.
*
* @since 8.0
*/
<name>Bag selectByOccurrences(IntPredicate predicate);
/**
* Returns all elements of the bag that have more than one occurrence.
*
* @since 9.2
*/
default <name>Bag selectDuplicates()
{
return this.selectByOccurrences(occurrences -> occurrences > 1);
}
/**
* Returns all elements of the bag that have exactly one occurrence.
*
* @since 9.2
*/
default <name>Set selectUnique()
{
throw new UnsupportedOperationException("Adding default implementation so as to not break compatibility");
}
/**
* Returns the {@code count} most frequently occurring items.
*
* In the event of a tie, all of the items with the number of occurrences that match the occurrences of the last
* item will be returned.
*
* @since 8.0
*/
ListIterable\<<name>IntPair> topOccurrences(int count);
/**
* Returns the {@code count} least frequently occurring items.
*
* In the event of a tie, all of the items with the number of occurrences that match the occurrences of the last
* item will be returned.
*
* @since 8.0
*/
ListIterable\<<name>IntPair> bottomOccurrences(int count);
/**
* The occurrences of a distinct item in the bag.
*/
int occurrencesOf(<type> item);
/**
* For each distinct item, with the number of occurrences, execute the specified procedure.
*/
void forEachWithOccurrences(<name>IntProcedure procedure);
<sharedAPI(fileName(primitive), name)>
@Override
\<V> Bag\<V> collect(<name>ToObjectFunction\<? extends V> function);
/**
* Follows the same general contract as {@link Bag#equals(Object)}.
*/
@Override
boolean equals(Object o);
/**
* Follows the same general contract as {@link Bag#hashCode()}.
*/
@Override
int hashCode();
/**
* Returns an immutable copy of this bag. If the bag is immutable, it returns itself.
*/
Immutable<name>Bag toImmutable();
/**
* @since 9.2
*/
default String toStringOfItemToCount()
{
StringJoiner joiner = new StringJoiner(", ", "{", "}");
this.forEachWithOccurrences((each, occurrences) -> joiner.add(each + "=" + occurrences));
return joiner.toString();
}
}
>>