Beispiel #1
0
        /**
         * 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());
        }
Beispiel #3
0
 public E previous()
 {
     if (iterator.previousIndex() >= start)
     {
         return(iterator.previous());
     }
     throw new NoSuchElementException();
 }
Beispiel #4
0
 public E previous()
 {
     return(iterator.previous());
 }
Beispiel #5
0
        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);
            }
        }