⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reversing.java

📁 java 的源代码
💻 JAVA
字号:
package com.reddragon2046.base.utilities.data.algorithms;

import com.reddragon2046.base.utilities.data.*;
import com.reddragon2046.base.utilities.data.util.InsertIterator;
import com.reddragon2046.base.utilities.data.util.IteratorFactory;
import java.util.*;

// Referenced classes of package com.reddragon2046.base.utilities.data.algorithms:
//            Swapping

public final class Reversing
{

    private Reversing()
    {
    }

    public static void reverse(BidirectionalIterator first, BidirectionalIterator last)
    {
        if(!first.isCompatibleWith(last))
            throw new IllegalArgumentException("iterators not compatible");
        if(first instanceof RandomAccessIterator)
        {
            RandomAccessIterator firstx = (RandomAccessIterator)first.clone();
            for(RandomAccessIterator lastx = (RandomAccessIterator)last.clone(); firstx.less(lastx); firstx.advance())
            {
                lastx.retreat();
                Swapping.iterSwap(firstx, lastx);
            }

        } else
        {
            BidirectionalIterator firstx = (BidirectionalIterator)first.clone();
            BidirectionalIterator lastx = (BidirectionalIterator)last.clone();
            do
            {
                if(firstx.equals(lastx))
                    return;
                lastx.retreat();
                if(firstx.equals(lastx))
                    return;
                Swapping.iterSwap(firstx, lastx);
                firstx.advance();
            } while(true);
        }
    }

    public static void reverse(List list)
    {
        reverse(IteratorFactory.start(list), IteratorFactory.finish(list));
    }

    public static OutputIterator reverseCopy(BidirectionalIterator first, BidirectionalIterator last, OutputIterator result)
    {
        if(!first.isCompatibleWith(last))
            throw new IllegalArgumentException("iterators not compatible");
        BidirectionalIterator lastx = (BidirectionalIterator)last.clone();
        OutputIterator resultx = (OutputIterator)result.clone();
        for(; !lastx.equals(first); resultx.advance())
        {
            lastx.retreat();
            resultx.put(lastx.get());
        }

        return resultx;
    }

    public static OutputIterator reverseCopy(List input, OutputIterator result)
    {
        return reverseCopy(IteratorFactory.start(input), IteratorFactory.finish(input), result);
    }

    public static void reverseCopy(List source, Collection destination)
    {
        reverseCopy(IteratorFactory.start(source), IteratorFactory.finish(source), ((OutputIterator) (new InsertIterator(destination))));
    }

    public static List reverseCopy(List source)
    {
        Vector destination = new Vector(source.size());
        reverseCopy(source, ((Collection) (destination)));
        return destination;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -