Java Code Examples for java.util.PriorityQueue#clear()

The following examples show how to use java.util.PriorityQueue#clear() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: MaxValueInWindows.java    From SwordToOffer with Apache License 2.0 6 votes vote down vote up
public ArrayList<Integer> maxInWindows(int[] num, int size) {
    ArrayList<Integer> result = new ArrayList<Integer>();  //用一个列表存放每次窗口移动一位后窗口内的最大值
    if (num == null || num.length == 0 || size <= 0 || num.length < size) return result;
    PriorityQueue<Integer> queue = new PriorityQueue<Integer>(size, new Comparator<Integer>() {  //利用最大值排在前的优先队列自动比较放入队列的值
        public int compare(Integer i1, Integer i2) {
            return i2 - i1;  //这样重写比较器的比较函数,可以使前一个值小于后一个值时返回正数,与默认情况为负数相反
        }
    });
    int count = 0;  //每次加入窗口的元素数量的计数
    for (int i = 0; i < num.length - size + 1; i++) {  //num.length-size为最后一个窗口的开头位置,正如常见的i<array.length一样,这里的num.length-size+1是一个到不了的索引位置
        while (count < size) {  //当计数没达到窗口大小时,朝优先队列中添加元素,形成一个窗口
            queue.add(num[i + count]);
            count++;
        }
        result.add(queue.peek());  //经过优先队列排序后,最大元素排在前,因此队列第一个元素就是最大元素
        count = 0;  //一个窗口中的最大元素已经找到,清空计数和优先队列中的元素,进行下一个窗口多个元素的添加
        queue.clear();
    }
    return result;
}
 
Example 2
Source File: MinHashUDTF.java    From incubator-hivemall with Apache License 2.0 6 votes vote down vote up
private void computeAndForwardSignatures(List<FeatureValue> features, Object[] forwardObjs)
        throws HiveException {
    final PriorityQueue<Integer> minhashes = new PriorityQueue<Integer>();
    // Compute N sets K minhash values
    for (int i = 0; i < num_hashes; i++) {
        float weightedMinHashValues = Float.MAX_VALUE;

        for (FeatureValue fv : features) {
            Object f = fv.getFeature();
            int hashIndex = Math.abs(hashFuncs[i].hash(f));
            float w = fv.getValueAsFloat();
            float hashValue = calcWeightedHashValue(hashIndex, w);
            if (hashValue < weightedMinHashValues) {
                weightedMinHashValues = hashValue;
                minhashes.offer(hashIndex);
            }
        }

        forwardObjs[0] = getSignature(minhashes, num_keygroups);
        forward(forwardObjs);

        minhashes.clear();
    }
}
 
Example 3
Source File: MinHashesUDF.java    From incubator-hivemall with Apache License 2.0 6 votes vote down vote up
private static List<IntWritable> computeSignatures(final List<FeatureValue> features,
        final int numHashes, final int keyGroups, final int[] seeds) throws HiveException {
    final IntWritable[] hashes = new IntWritable[numHashes];
    final PriorityQueue<Integer> minhashes = new PriorityQueue<Integer>();
    // Compute N sets K minhash values
    for (int i = 0; i < numHashes; i++) {
        float weightedMinHashValues = Float.MAX_VALUE;
        for (FeatureValue fv : features) {
            Object f = fv.getFeature();
            assert (f != null);
            String fs = f.toString();
            int hashIndex = Math.abs(MurmurHash3.murmurhash3_x86_32(fs, seeds[i]));
            float w = fv.getValueAsFloat();
            float hashValue = calcWeightedHashValue(hashIndex, w);
            if (hashValue < weightedMinHashValues) {
                weightedMinHashValues = hashValue;
                minhashes.offer(hashIndex);
            }
        }

        hashes[i] = val(getSignature(minhashes, keyGroups));
        minhashes.clear();
    }

    return Arrays.asList(hashes);
}
 
Example 4
Source File: PriorityQueueTest.java    From openjdk-jdk9 with GNU General Public License v2.0 5 votes vote down vote up
/**
 * clear removes all elements
 */
public void testClear() {
    PriorityQueue q = populatedQueue(SIZE);
    q.clear();
    assertTrue(q.isEmpty());
    assertEquals(0, q.size());
    q.add(new Integer(1));
    assertFalse(q.isEmpty());
    q.clear();
    assertTrue(q.isEmpty());
}
 
Example 5
Source File: MinDHeapTest.java    From Algorithms with MIT License 5 votes vote down vote up
@Test
public void testPriorityRandomOperations() {
  for (int loop = 0; loop < LOOPS; loop++) {

    double p1 = Math.random();
    double p2 = Math.random();
    if (p2 < p1) {
      double tmp = p1;
      p1 = p2;
      p2 = tmp;
    }

    Integer[] ar = genRandArray(LOOPS);
    int d = 2 + (int) (Math.random() * 6);
    MinDHeap<Integer> pq = new MinDHeap<>(d, LOOPS);
    PriorityQueue<Integer> pq2 = new PriorityQueue<>(LOOPS);

    for (int i = 0; i < LOOPS; i++) {
      int e = ar[i];
      double r = Math.random();
      if (0 <= r && r <= p1) {
        pq.add(e);
        pq2.add(e);
      } else if (p1 < r && r <= p2) {
        if (!pq2.isEmpty()) assertEquals(pq.poll(), pq2.poll());
      } else {
        pq.clear();
        pq2.clear();
      }
    }

    assertEquals(pq.peek(), pq2.peek());
  }
}
 
Example 6
Source File: MinDHeapTest.java    From data-structures with MIT License 5 votes vote down vote up
@Test
public void testPriorityRandomOperations() {
  for (int loop = 0; loop < LOOPS; loop++) {

    double p1 = Math.random();
    double p2 = Math.random();
    if (p2 < p1) {
      double tmp = p1;
      p1 = p2;
      p2 = p1;
    }

    Integer[] ar = genRandArray(LOOPS);
    int d = 2 + (int) (Math.random() * 6);
    MinDHeap<Integer> pq = new MinDHeap<>(d, LOOPS);
    PriorityQueue<Integer> pq2 = new PriorityQueue<>(LOOPS);

    for (int i = 0; i < LOOPS; i++) {
      int e = ar[i];
      double r = Math.random();
      if (0 <= r && r <= p1) {
        pq.add(e);
        pq2.add(e);
      } else if (p1 < r && r <= p2) {
        if (!pq2.isEmpty()) assertEquals(pq.poll(), pq2.poll());
      } else {
        pq.clear();
        pq2.clear();
      }
    }

    assertEquals(pq.peek(), pq2.peek());
  }
}
 
Example 7
Source File: PriorityQueueTest.java    From j2objc with Apache License 2.0 5 votes vote down vote up
/**
 * java.util.PriorityQueue#Clear()
 */
public void test_clear() {
    PriorityQueue<Integer> integerQueue = new PriorityQueue<Integer>();
    int[] array = { 2, 45, 7, -12, 9 };
    for (int i = 0; i < array.length; i++) {
        integerQueue.offer(array[i]);
    }
    integerQueue.clear();
    assertTrue(integerQueue.isEmpty());
}
 
Example 8
Source File: PriorityQueueTest.java    From j2objc with Apache License 2.0 5 votes vote down vote up
/**
 * clear removes all elements
 */
public void testClear() {
    PriorityQueue q = populatedQueue(SIZE);
    q.clear();
    assertTrue(q.isEmpty());
    assertEquals(0, q.size());
    q.add(new Integer(1));
    assertFalse(q.isEmpty());
    q.clear();
    assertTrue(q.isEmpty());
}
 
Example 9
Source File: Classifier.java    From yolov3-android-tflite with MIT License 4 votes vote down vote up
protected ArrayList<Recognition> nms(ArrayList<Recognition> list) {
    ArrayList<Recognition> nmsList = new ArrayList<Recognition>();

    for (int k = 0; k < mLabelList.size(); k++) {
        //1.find max confidence per class
        PriorityQueue<Recognition> pq =
                new PriorityQueue<Recognition>(
                        10,
                        new Comparator<Recognition>() {
                            @Override
                            public int compare(final Recognition lhs, final Recognition rhs) {
                                // Intentionally reversed to put high confidence at the head of the queue.
                                return Float.compare(rhs.getConfidence(), lhs.getConfidence());
                            }
                        });

        for (int i = 0; i < list.size(); ++i) {
            if (list.get(i).detectedClass == k) {
                pq.add(list.get(i));
            }
        }
        Log.d("wangmin", "class[" + k + "] pq size: " + pq.size());

        //2.do non maximum suppression
        while(pq.size() > 0) {
            //insert detection with max confidence
            Recognition[] a = new Recognition[pq.size()];
            Recognition[] detections = pq.toArray(a);
            Recognition max = detections[0];
            nmsList.add(max);

            Log.d("wangmin", "before nms pq size: " + pq.size());

            //clear pq to do next nms
            pq.clear();

            for (int j = 1; j < detections.length; j++) {
                Recognition detection = detections[j];
                RectF b = detection.getLocation();
                if (box_iou(max.getLocation(), b) < mNmsThresh){
                    pq.add(detection);
                }
            }
            Log.d("wangmin", "after nms pq size: " + pq.size());
        }
    }
    return nmsList;
}
 
Example 10
Source File: ForgetMeNot.java    From openjdk-jdk9 with GNU General Public License v2.0 4 votes vote down vote up
private static void realMain(String[] args) throws Throwable {
    final PriorityQueue<Integer> q = new PriorityQueue<>();
    Iterator<Integer> it;

    //----------------------------------------------------------------
    // Empty
    //----------------------------------------------------------------
    checkQ(q);
    check(q.isEmpty());
    check(! q.contains(1));
    it = q.iterator();
    removeIsCurrentlyIllegal(it);
    noMoreElements(it);
    q.clear();
    check(q.isEmpty());

    //----------------------------------------------------------------
    // Singleton
    //----------------------------------------------------------------
    q.add(1);
    checkQ(q, 1);
    check(! q.isEmpty());
    check(q.contains(1));
    it = q.iterator();
    removeIsCurrentlyIllegal(it);
    check(it.hasNext());
    equal(it.next(), 1);
    noMoreElements(it);
    remove(it, q);
    check(q.isEmpty());
    noMoreElements(it);
    checkQ(q);
    q.clear();

    //----------------------------------------------------------------
    // @see PriorityQueue.forgetMeNot
    //----------------------------------------------------------------
    final Integer[] a = {0, 4, 1, 6, 7, 2, 3}; // Carefully chosen!
    q.addAll(Arrays.asList(a));
    checkQ(q, a);
    it = q.iterator();
    checkQ(q, a);
    removeIsCurrentlyIllegal(it);
    checkQ(q, a);
    check(it.hasNext());
    removeIsCurrentlyIllegal(it);
    checkQ(q, a);
    check(it.hasNext());
    equal(it.next(), 0);
    equal(it.next(), 4);
    equal(it.next(), 1);
    equal(it.next(), 6);
    check(it.hasNext());
    checkQ(q, a);
    remove(it, q);
    checkQ(q, 0, 3, 1, 4, 7, 2);
    check(it.hasNext());
    removeIsCurrentlyIllegal(it);
    equal(it.next(), 7);
    remove(it, q);
    checkQ(q, 0, 2, 1, 4, 3);
    check(it.hasNext());
    removeIsCurrentlyIllegal(it);
    check(it.hasNext());
    equal(it.next(), 3);
    equal(it.next(), 2);
    check(! it.hasNext());
    remove(it, q);
    checkQ(q, 0, 3, 1, 4);
    check(! it.hasNext());
    noMoreElements(it);
    removeIsCurrentlyIllegal(it);
}
 
Example 11
Source File: GraphCalculator.java    From charts with Apache License 2.0 4 votes vote down vote up
public NodeEdgeModel calculateClosenessCentrality(NodeEdgeModel nodeEdgeModel){
    PriorityQueue<GraphNode> queue = new PriorityQueue<>();

    ArrayList<GraphNode> visited = new ArrayList<>();
    int level;
    int counterUntilNextLevel;
    int counterOfNextLevel;
    double result;
    GraphNode currentNode;
    ArrayList<GraphNode> GraphNodes = nodeEdgeModel.getNodes();

    for(GraphNode node: GraphNodes){
        visited.clear();
        queue.clear();
        queue.add(node);
        result = 0;
        level = 0;
        counterUntilNextLevel = 1;
        counterOfNextLevel = 0;

        while(!queue.isEmpty()){
            currentNode = queue.poll();
            counterOfNextLevel += currentNode.getConnectedNodes().size();
            visited.add(currentNode);
            ArrayList<GraphNode> currentNodeList = new ArrayList<>(currentNode.getConnectedNodes());
            for(GraphNode gNode: currentNodeList){
                if(!visited.contains(gNode) && !queue.contains(gNode)){
                    queue.add(gNode);
                }
            }
            if(level>0) {
                result += 1.0 / (double) level;
            }
            counterUntilNextLevel--;
            if(counterUntilNextLevel == 0){
                level++;
                counterUntilNextLevel = counterOfNextLevel;
                counterOfNextLevel = 0;
            }
        }
        node.setNumericAttribute(closenessKey, new Double(result));
    }
    return nodeEdgeModel;
}
 
Example 12
Source File: BinaryHeapTest.java    From Algorithms with MIT License 4 votes vote down vote up
@Test
public void testPQReusability() {

  List<Integer> SZs = genUniqueRandList(LOOPS);

  PriorityQueue<Integer> PQ = new PriorityQueue<>();
  BinaryHeap<Integer> pq = new BinaryHeap<>();

  for (int sz : SZs) {

    pq.clear();
    PQ.clear();

    List<Integer> nums = genRandList(sz);
    for (int n : nums) {
      pq.add(n);
      PQ.add(n);
    }

    Collections.shuffle(nums);

    for (int i = 0; i < sz / 2; i++) {

      // Sometimes add a new number into the BinaryHeap
      if (0.25 < Math.random()) {
        int randNum = (int) (Math.random() * 10000);
        PQ.add(randNum);
        pq.add(randNum);
      }

      int removeNum = nums.get(i);

      assertTrue(pq.isMinHeap(0));
      assertEquals(PQ.size(), pq.size());
      assertEquals(PQ.peek(), pq.peek());

      PQ.remove(removeNum);
      pq.remove(removeNum);

      assertEquals(PQ.peek(), pq.peek());
      assertEquals(PQ.size(), pq.size());
      assertTrue(pq.isMinHeap(0));
    }
  }
}
 
Example 13
Source File: BinaryHeapQuickRemovalsTest.java    From Algorithms with MIT License 4 votes vote down vote up
@Test
public void testPQReusability() {

  List<Integer> SZs = genUniqueRandList(LOOPS);

  PriorityQueue<Integer> PQ = new PriorityQueue<>();
  BinaryHeapQuickRemovals<Integer> pq = new BinaryHeapQuickRemovals<>();

  for (int sz : SZs) {

    pq.clear();
    PQ.clear();

    List<Integer> nums = genRandList(sz);
    for (int n : nums) {
      pq.add(n);
      PQ.add(n);
    }

    Collections.shuffle(nums);

    for (int i = 0; i < sz / 2; i++) {

      // Sometimes add a new number into the BinaryHeapQuickRemovals
      if (0.25 < Math.random()) {
        int randNum = (int) (Math.random() * 10000);
        PQ.add(randNum);
        pq.add(randNum);
      }

      int removeNum = nums.get(i);

      assertTrue(pq.isMinHeap(0));
      assertEquals(PQ.size(), pq.size());
      assertEquals(PQ.peek(), pq.peek());

      PQ.remove(removeNum);
      pq.remove(removeNum);

      assertEquals(PQ.peek(), pq.peek());
      assertEquals(PQ.size(), pq.size());
      assertTrue(pq.isMinHeap(0));
    }
  }
}
 
Example 14
Source File: BinaryHeapTest.java    From data-structures with MIT License 4 votes vote down vote up
@Test
public void testPQReusability() {

  List<Integer> SZs = genUniqueRandList(LOOPS);

  PriorityQueue<Integer> PQ = new PriorityQueue<>();
  BinaryHeap<Integer> pq = new BinaryHeap<>();

  for (int sz : SZs) {

    pq.clear();
    PQ.clear();

    List<Integer> nums = genRandList(sz);
    for (int n : nums) {
      pq.add(n);
      PQ.add(n);
    }

    Collections.shuffle(nums);

    for (int i = 0; i < sz / 2; i++) {

      // Sometimes add a new number into the BinaryHeap
      if (0.25 < Math.random()) {
        int randNum = (int) (Math.random() * 10000);
        PQ.add(randNum);
        pq.add(randNum);
      }

      int removeNum = nums.get(i);

      assertTrue(pq.isMinHeap(0));
      assertEquals(PQ.size(), pq.size());
      assertEquals(PQ.peek(), pq.peek());

      PQ.remove(removeNum);
      pq.remove(removeNum);

      assertEquals(PQ.peek(), pq.peek());
      assertEquals(PQ.size(), pq.size());
      assertTrue(pq.isMinHeap(0));
    }
  }
}
 
Example 15
Source File: BinaryHeapQuickRemovalsTest.java    From data-structures with MIT License 4 votes vote down vote up
@Test
public void testPQReusability() {

  List<Integer> SZs = genUniqueRandList(LOOPS);

  PriorityQueue<Integer> PQ = new PriorityQueue<>();
  BinaryHeapQuickRemovals<Integer> pq = new BinaryHeapQuickRemovals<>();

  for (int sz : SZs) {

    pq.clear();
    PQ.clear();

    List<Integer> nums = genRandList(sz);
    for (int n : nums) {
      pq.add(n);
      PQ.add(n);
    }

    Collections.shuffle(nums);

    for (int i = 0; i < sz / 2; i++) {

      // Sometimes add a new number into the BinaryHeapQuickRemovals
      if (0.25 < Math.random()) {
        int randNum = (int) (Math.random() * 10000);
        PQ.add(randNum);
        pq.add(randNum);
      }

      int removeNum = nums.get(i);

      assertTrue(pq.isMinHeap(0));
      assertEquals(PQ.size(), pq.size());
      assertEquals(PQ.peek(), pq.peek());

      PQ.remove(removeNum);
      pq.remove(removeNum);

      assertEquals(PQ.peek(), pq.peek());
      assertEquals(PQ.size(), pq.size());
      assertTrue(pq.isMinHeap(0));
    }
  }
}