From 53c0a239826a8e95a088b5b3398bb847e888a4ff Mon Sep 17 00:00:00 2001 From: ChaikaAM Date: Wed, 5 Oct 2016 11:21:39 +0400 Subject: [PATCH] first commit --- .../exercise/RectangleSpliterator.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/main/java/spliterators/lesson7/exercise/RectangleSpliterator.java b/src/main/java/spliterators/lesson7/exercise/RectangleSpliterator.java index 9e2dc01..f4dc87f 100755 --- a/src/main/java/spliterators/lesson7/exercise/RectangleSpliterator.java +++ b/src/main/java/spliterators/lesson7/exercise/RectangleSpliterator.java @@ -27,10 +27,20 @@ private RectangleSpliterator(int[][] array, int startOuterInclusive, int endOute this.startInnerInclusive = startInnerInclusive; } + private boolean isSplitterable(){ + return endOuterExclusive-startInnerInclusive>=2; + } + @Override public OfInt trySplit() { - // TODO - throw new UnsupportedOperationException(); + final int aboutMiddleIndex = startInnerInclusive + (endOuterExclusive-startInnerInclusive)/2; + + RectangleSpliterator rectangleSpliterator = new RectangleSpliterator(array, + startOuterInclusive, + endOuterExclusive, + aboutMiddleIndex); + this.startInnerInclusive = aboutMiddleIndex; //how???? its final + return isSplitterable()?rectangleSpliterator:null; } @Override @@ -38,9 +48,20 @@ public long estimateSize() { return ((long) endOuterExclusive - startOuterInclusive)*innerLength - startInnerInclusive; } + private int currentX; + private int currentY; @Override public boolean tryAdvance(IntConsumer action) { - // TODO - throw new UnsupportedOperationException(); + if (currentY>array.length && currentX>array[currentY].length) + + if (startInnerInclusive=array[currentY].length){ + currentX=0; + currentY++; + } + } + return true; } }