Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #37709
| From | Eric Sosman <esosman@comcast-dot-net.invalid> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: Can I put a filter into a lambda? |
| Date | 2017-12-01 16:28 -0500 |
| Organization | A noiseless patient Spider |
| Message-ID | <ovshh6$8q1$1@dont-email.me> (permalink) |
| References | <321ee28f-bbea-4565-a48e-c0476d9a78d4@googlegroups.com> |
On 12/1/2017 3:52 PM, Eric Douglas wrote:
> I haven't gotten around to mastering the lambda syntax.
> I have a JTable with a custom row sorter building an index of all model rows:
>
> rowToModelIndex.clear();
> if (modelRowCount > 0) {
> if (getRowFilter() != null) {
> for (int r = 0; r < modelRowCount; r++) {
> if (include(r)) {
> rowToModelIndex.add(r);
> }
> }
> } else {
> rowToModelIndex.addAll(Stream.iterate(firstRow, n -> n + 1).limit(modelRowCount).collect(Collectors.toList()));
> }
> }
>
> If it's a straight up series it's a lambda. Can the filter loop be also? I would guess that would be more efficient.
It's not clear what your filter loop is actually doing:
the RowFilter seems never to be used, and I can't find any
one-argument include() method in any Java SE (8 or 9) class.
(You also haven't shown what rowToModelIndex is, but I'll
guess it's a Collection<Integer>, possibly List<Integer>).
So I'll restate the problem without the table trappings:
1) If getRowFilter() returns null, you want a List of
all the values 0 through modelRowCount-1, in order.
2) If getRowFilter() returns non-null, you want a List
of the same values, excluding those for which the
boolean-valued include(int) method returns false.
If that's not the goal, read no further. But if it is
(or is close enough for jazz), both cases can be written
more simply:
// Case 1:
rowModelIndex = IntStream.range(0, modelRowCount)
.mapToObj(Integer::valueOf)
.collect(Collectors.toList());
// Case 2:
rowModelIndex = IntStream.range(0, modelRowCount)
.filter((value) -> include(value))
.mapToObj(Integer::valueOf)
.collect(Collectors.toList());
Final point: If you can't stop worrying about efficiency,
at the very least stop *guessing* about it!
--
esosman@comcast-dot-net.invalid
Eleven hundred forty-six days to go.
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Can I put a filter into a lambda? Eric Douglas <e.d.programmer@gmail.com> - 2017-12-01 12:52 -0800
Re: Can I put a filter into a lambda? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-12-01 16:28 -0500
Re: Can I put a filter into a lambda? Eric Douglas <e.d.programmer@gmail.com> - 2017-12-04 05:03 -0800
Re: Can I put a filter into a lambda? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-12-04 08:20 -0500
Re: Can I put a filter into a lambda? Eric Douglas <e.d.programmer@gmail.com> - 2017-12-04 05:32 -0800
Re: Can I put a filter into a lambda? Eric Sosman <esosman@comcast-dot-net.invalid> - 2017-12-04 09:29 -0500
Re: Can I put a filter into a lambda? Eric Douglas <e.d.programmer@gmail.com> - 2017-12-04 07:14 -0800
Re: Can I put a filter into a lambda? Sebastian <nowhere@nirvana.org> - 2017-12-08 15:00 +0100
csiph-web