Run Code
|
API
|
Code Wall
|
Users
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Filter Iterator
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
//'main' method must be in a class 'Rextester'. //Compiler version 1.8.0_111 import java.util.*; import java.lang.*; class Rextester { public static void main(String args[]) { List<Integer> l = Arrays.asList(1,2,3,4,5,6,7,8,9,10); FilterIterator<Integer> iter = new FilterIterator<>(l.iterator(), new Filter()); while (iter.hasNext()) System.out.println(iter.next()); } } class FilterIterator<T> implements Iterator<T> { Iterator<T> iter; Filter filter; T nextObj; public FilterIterator(Iterator<T> iter, Filter filter) { this.iter = iter; this.filter = filter; nextObj = null; } @Override public boolean hasNext() { while (nextObj == null && iter.hasNext()) { T candidate = iter.next(); if (filter.run(candidate)) { nextObj = candidate; break; } } return nextObj != null; } @Override public T next() { hasNext(); if (nextObj == null) throw new NoSuchElementException(); T tmp = nextObj; nextObj = null; return tmp; } } class Filter { public boolean run(Object i) { return ((Integer) i % 3) == 0; } }
[
+
]
Show input
Compilation time: 1.04 sec, absolute running time: 0.23 sec, cpu time: 0.22 sec, memory peak: 18 Mb, absolute service time: 1,28 sec
edit mode
|
history
|
discussion
3 6 9