/** * Searches this list for the specified object and returns the index of the * last occurrence. * * @param object * the object to search for. * @return the index of the last occurrence of the object, or -1 if the * object was not found. */ public virtual int lastIndexOf(Object obj) { ListIterator <E> it = listIterator(size()); if (obj != null) { while (it.hasPrevious()) { if (obj.equals(it.previous())) { return(it.nextIndex()); } } } else { while (it.hasPrevious()) { if (it.previous() == null) { return(it.nextIndex()); } } } return(-1); }
private void testListIterator(List <DSInteger> the_list) { ListIterator <DSInteger> it = the_list.listIterator(); int count = 0; while (it.hasNext()) { count++; it.next(); } //you are at the last item, not one before the first item when the //initial loop begins count--; while (it.hasPrevious()) { count--; it.previous(); } Assert.AreEqual(0, count); //test values returned it = the_list.listIterator(); Assert.AreEqual(30, it.next().value); Assert.AreEqual(60, it.next().value); //test removal DSInteger removed = it.remove(); Assert.AreEqual(60, removed.value); Assert.AreEqual(90, it.next().value); it.next(); //120 it.next(); //150 //test removing the last item Assert.AreEqual(false, it.hasNext()); Assert.AreEqual(150, it.remove().value); Assert.AreEqual(false, it.hasNext()); Assert.AreEqual(90, it.previous().value); Assert.AreEqual(true, it.hasNext()); Assert.AreEqual(120, it.next().value); //test removing the first item the_list.clear(); addInitialItems(the_list); it = the_list.listIterator(); Assert.AreEqual(false, it.hasPrevious()); Assert.AreEqual(30, it.next().value); it.remove(); Assert.AreEqual(false, it.hasPrevious()); Assert.AreEqual(60, it.next().value); Assert.AreEqual(90, it.next().value); Assert.AreEqual(60, it.previous().value); Assert.AreEqual(false, it.hasPrevious()); }
public bool hasPrevious() { return(iterator.hasPrevious()); }
public virtual void computeNodePosteriors(float languageModelWeightAdjustment, bool useAcousticScoresOnly) { if (this.initialNode == null) { return; } this.initialNode.setForwardScore((double)0f); this.initialNode.setViterbiScore((double)0f); List list = this.sortNodes(); if (!Lattice.assertionsDisabled && list.get(0) != this.initialNode) { throw new AssertionError(); } Iterator iterator = list.iterator(); while (iterator.hasNext()) { Node node = (Node)iterator.next(); Iterator iterator2 = node.getLeavingEdges().iterator(); while (iterator2.hasNext()) { Edge edge = (Edge)iterator2.next(); double num = edge.getFromNode().getForwardScore(); double num2 = this.computeEdgeScore(edge, languageModelWeightAdjustment, useAcousticScoresOnly); num += num2; edge.getToNode().setForwardScore((double)this.logMath.addAsLinear((float)num, (float)edge.getToNode().getForwardScore())); double num3 = edge.getFromNode().getViterbiScore() + num2; if (edge.getToNode().getBestPredecessor() == null || num3 > edge.getToNode().getViterbiScore()) { edge.getToNode().setBestPredecessor(node); edge.getToNode().setViterbiScore(num3); } } } this.terminalNode.setBackwardScore((double)0f); if (!Lattice.assertionsDisabled && list.get(list.size() - 1) != this.terminalNode) { throw new AssertionError(); } ListIterator listIterator = list.listIterator(list.size() - 1); Iterator iterator3; while (listIterator.hasPrevious()) { Node node = (Node)listIterator.previous(); Collection leavingEdges = node.getLeavingEdges(); iterator3 = leavingEdges.iterator(); while (iterator3.hasNext()) { Edge edge2 = (Edge)iterator3.next(); double num4 = edge2.getToNode().getBackwardScore(); num4 += this.computeEdgeScore(edge2, languageModelWeightAdjustment, useAcousticScoresOnly); edge2.getFromNode().setBackwardScore((double)this.logMath.addAsLinear((float)num4, (float)edge2.getFromNode().getBackwardScore())); } } double num5 = this.terminalNode.getForwardScore(); iterator3 = this.nodes.values().iterator(); while (iterator3.hasNext()) { Node node2 = (Node)iterator3.next(); node2.setPosterior(node2.getForwardScore() + node2.getBackwardScore() - num5); } }