swapping.java

来自「java 的源代码」· Java 代码 · 共 45 行

JAVA
45
字号
package com.reddragon2046.base.utilities.data.algorithms;

import com.reddragon2046.base.utilities.data.ForwardIterator;
import com.reddragon2046.base.utilities.data.InputIterator;
import com.reddragon2046.base.utilities.data.util.IteratorFactory;
import java.util.List;

public final class Swapping
{

    private Swapping()
    {
    }

    public static void iterSwap(ForwardIterator iterator1, ForwardIterator iterator2)
    {
        Object tmp = iterator1.get();
        iterator1.put(iterator2.get());
        iterator2.put(tmp);
    }

    private static ForwardIterator swapRanges(ForwardIterator first1, ForwardIterator last1, ForwardIterator first2)
    {
        if(!first1.isCompatibleWith(last1))
            throw new IllegalArgumentException("iterators not compatible");
        ForwardIterator first1x = (ForwardIterator)first1.clone();
        ForwardIterator first2x = (ForwardIterator)first2.clone();
        for(; !first1x.equals(last1); first2x.advance())
        {
            iterSwap(first1x, first2x);
            first1x.advance();
        }

        return first2x;
    }

    public static ForwardIterator swapElements(List list1, List list2)
    {
        if(list1.size() != list2.size())
            throw new IllegalArgumentException("lists must have the same number of elements");
        else
            return swapRanges(IteratorFactory.start(list1), IteratorFactory.finish(list1), IteratorFactory.start(list2));
    }
}

⌨️ 快捷键说明

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