📄 swapping.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 + -