Advertisement
Guest User

Range ohne Listen

a guest
Dec 12th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Range implements Iterable<Integer> {
  4. private final int begin, end, stride;
  5.  
  6. public Range(int begin, int end, int stride) throws Exception {
  7. this.begin = begin;
  8. this.end = end;
  9. if (stride > 0) {
  10. this.stride = stride;
  11. } else {
  12. throw new Exception("stride muss größer als 0 sein!");
  13. }
  14. }
  15.  
  16. public Range(int begin, int end) {
  17. this.begin = begin;
  18. this.end = end;
  19. this.stride = 1;
  20.  
  21. }
  22.  
  23. public int getEnd() {
  24. return end;
  25. }
  26.  
  27. public int getStride() {
  28. return stride;
  29. }
  30.  
  31. public int getBegin() {
  32. return begin;
  33. }
  34.  
  35. @Override
  36. public Iterator<Integer> iterator() {
  37. return new RangeIterator();
  38. }
  39.  
  40. class RangeIterator implements Iterator<Integer> {
  41. private int current = begin;
  42. private boolean b = true;
  43.  
  44. @Override
  45. public boolean hasNext() {
  46. if (begin == end)
  47. return b;
  48. if (begin > end)
  49. return (end <= current);
  50. if (begin < end)
  51. return (end >= current);
  52. return false;
  53. }
  54.  
  55. @Override
  56. public Integer next() {
  57. int c = current;
  58. if (!hasNext())
  59. throw new NoSuchElementException("keine Elemente mehr!");
  60. if (begin < end)
  61. current = current + stride;
  62. if (begin > end)
  63. current = current - stride;
  64. if (begin == end)b=false;
  65. return c;
  66. }
  67.  
  68. }
  69.  
  70. public static void main(String[] args) throws Exception {
  71. Range r = new Range(100000,0, 1);
  72. for (Integer in : r) {
  73. System.out.println(in);
  74. }
  75.  
  76. }
  77.  
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement