Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

44
LINES

< > BotCompany Repo | #1023903 // AllOnAllWithUpdates

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (2252L/14K).

sclass AllOnAllWithUpdates<A, B> {
  long aCounter, bCounter;
  new TreeMap<Long, A> aList;
  new TreeMap<Long, B> bList;
  LPair<LongRange> todo = new LinkedList;
  LPair<Long> todo2 = new LinkedList;

  synchronized void newA(A a) {
    long c = aCounter++;
    aList.put(c, a);
    addPair(todo, longRange_one(c), longRange(0, bCounter));
  }
  
  synchronized void newB(B b) {
    long c = bCounter++;
    bList.put(c, b);
    addPair(todo, longRange(0, aCounter), longRange_one(c));
  }
  
  synchronized void updateA(A a) {
    removeValue(aList, a);
    newA(a);
  }
  
  synchronized void updateB(B b) {
    removeValue(bList, b);
    newB(b);
  }
  
  synchronized Pair<A, B> next() {
    while licensed {
      while (empty(todo2)) {
        if (empty(todo)) null;
        Pair<LongRange> p = popFirst(todo);
        addAll(todo2, outerProduct_pairs(keys(subMap_longRange(aList, p.a)), keys(subMap_longRange(bList, p.b))));
      }
      Pair<Long> p = popFirst(todo2);
      A a = aList.get(p.a);
      B b = bList.get(p.b);
      if (a != null && b != null) ret pair(a, b);
    }
    null;
  }
}

Author comment

Began life as a copy of #1023892

download  show line numbers  debug dex  old transpilations   

Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1023903
Snippet name: AllOnAllWithUpdates
Eternal ID of this version: #1023903/11
Text MD5: 5028f2ad8136bc9ab2c6bebd93e563df
Transpilation MD5: 86c2340fd59852984527276e79ee2566
Author: stefan
Category: javax
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2019-07-12 02:19:36
Source code size: 1150 bytes / 44 lines
Pitched / IR pitched: No / No
Views / Downloads: 208 / 646
Version history: 10 change(s)
Referenced in: [show references]