1 package org.djutils.base; 2 3 import java.util.Objects; 4 5 /** 6 * A simple version of a mutable integer with get() and set(int) functions. 7 * <p> 8 * Copyright (c) 2023-2024 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See 9 * for project information <a href="https://djutils.org" target="_blank"> https://djutils.org</a>. The DJUTILS project is 10 * distributed under a three-clause BSD-style license, which can be found at 11 * <a href="https://djutils.org/docs/license.html" target="_blank"> https://djutils.org/docs/license.html</a>. 12 * </p> 13 * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a> 14 */ 15 public class MutableInt 16 { 17 /** the current value of the mutable integer. */ 18 private int value; 19 20 /** 21 * Initialize the mutable integer with a value. 22 * @param value int; the initial value of the mutable integer 23 */ 24 public MutableInt(final int value) 25 { 26 set(value); 27 } 28 29 /** 30 * set the mutable integer to a new value. 31 * @param newValue int; the new value of the mutable integer 32 */ 33 public void set(final int newValue) 34 { 35 this.value = newValue; 36 } 37 38 /** 39 * @return int; the current value of the mutable integer 40 */ 41 public int get() 42 { 43 return this.value; 44 } 45 46 /** 47 * Increment the modifiable int with a value. 48 * @param increment int; the value to increment the modifiable int with 49 */ 50 public void inc(final int increment) 51 { 52 this.value += increment; 53 } 54 55 /** 56 * Increment the modifiable int with 1. 57 */ 58 public void inc() 59 { 60 inc(1); 61 } 62 63 /** 64 * Decrement the modifiable int with a value. 65 * @param decrement int; the value to decrement the modifiable int with 66 */ 67 public void dec(final int decrement) 68 { 69 this.value -= decrement; 70 } 71 72 /** 73 * Decrement the modifiable int with 1. 74 */ 75 public void dec() 76 { 77 dec(1); 78 } 79 80 /** 81 * Increment the modifiable int with a value. 82 * @param multiplier int; the value to multiply the modifiable int with 83 */ 84 public void mul(final int multiplier) 85 { 86 this.value *= multiplier; 87 } 88 89 /** 90 * Divide the modifiable int by a value. 91 * @param divisor int; the value to divide the modifiable int by 92 */ 93 public void div(final int divisor) 94 { 95 this.value /= divisor; 96 } 97 98 @Override 99 public int hashCode() 100 { 101 return Objects.hash(this.value); 102 } 103 104 @Override 105 @SuppressWarnings("checkstyle:needbraces") 106 public boolean equals(final Object obj) 107 { 108 if (this == obj) 109 return true; 110 if (obj == null) 111 return false; 112 if (getClass() != obj.getClass()) 113 return false; 114 MutableInt other = (MutableInt) obj; 115 return this.value == other.value; 116 } 117 118 @Override 119 public String toString() 120 { 121 return "MutableInt [value=" + this.value + "]"; 122 } 123 124 }