Java: memory efficient storing of arrays of integers -


premise: problem might known, , might using wrong wording, please refer me elsewhere if case.

quick problem overview: have store high number of arrays of integers in order avoid duplication. doing following:

linkedlist<int[]> arraysalreadyused; 

upon using array, add list. before using array see if in list. since need use many high dimensional arrays run memory issues.

question: good/the best way of doing in order minimize amount of memory occupied? there way represent such arrays hash string? , better?

it may make sense create wrapper implements equals , hashcode can place arrays in set o(1) contains/add. like:

public class intarray {   private final int[] array;   private final int hash;    public intarray(int[] array) {     this.array = array;     this.hash = arrays.hashcode(this.array); //cache hashcode better performance   }    @override   public int hashcode() {     return hash;   }    @override   public boolean equals(object obj) {     if (obj == null) return false;     if (getclass() != obj.getclass()) return false;     final intarray other = (intarray) obj;     return arrays.equals(this.array, other.array);   } } 

you can use set:

set<intarray> arrays = new hashset<> (); 

that create small overhead (guestimate less 20 bytes per wrapper) perform better linkedlist.

if memory concern go int[][] more painful...


Comments

Popular posts from this blog

javascript - AngularJS custom datepicker directive -

javascript - jQuery date picker - Disable dates after the selection from the first date picker -