Sorting parallel ArrayList
1. Correctnes.

compareTo() method of the WinningSet class is not correct. As of now Integer.MAX_VALUE &lt; System.currentTimeMillis(). Consider the following example:

    long time1 = System.currentTimeMillis();
    System.out.println(time1 &gt; 3*Integer.MAX_VALUE);
    System.out.println(time1 - 3*Integer.MAX_VALUE);
    System.out.println((int)(time1 - 3*Integer.MAX_VALUE));


It could be the case that your events are generated around the same time and it will not result in any error but in general - e.g. in future, if you restore some serialized objects, it could lead to a possible problem. You can rewrite it int the following way:

        @Override
        public int compareTo(WinningSet another) {
            if (this.unixtime &gt; another.getUnixtime()) return 1;
            if (this.unixtime &lt; another.getUnixTime()) return -1;
            return 0;
        }


2. Performance

Copy of the 3 lists is indeed a bad thing. You can use set() method from ListIterator to traverse through the lists and replace values in place.

private void demap(ArrayList&lt;WinningSet&gt; list) {         
            Iterator li = list.iterator();
            Iterator si = sets.iterator();
            Iterator di = dates.iterator();
            Iterator ui = unixtimes.iterator();
            //you can add iterators for other lists here. 
            while (li.hasNext()) {// we assume number is the same
              WinningSet temp = li.next();
              si.next(); //need to advance to the right element;  
              di.next(); //need to advance to the right element;  
              ci.next(); //need to advance to the right element;  
              si.set(temp.getSet());
              di.set(temp.getDate());
              ui.set(temp.getUnixTime());
            }
        }


3. Design

Are you sure that instead of a 3 lists you can't consider TreeMap&lt;Long, SomeClass> where SomeClass is pair or Calendar and Object ? In this case you will always have the right order of items to work with - there is no need to sort lists on demand and do an extra work.