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

📄 swapping.java

📁 java 的源代码
💻 JAVA
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -