将元素从一个 ArrayList 移动到另一个
Moving elements from one ArrayList to another
我课程中的指导是:完成下面静态方法 transplantBlock 的定义,对于任何非负整数 n,从 ArrayList fromList 中从索引开始的元素开始删除一个包含 n 个元素的块,然后插入它们(按顺序)进入一个从索引目标开始的 ArrayList toList。 (如果从索引start的元素到fromList的末尾少于n个元素,则该方法从索引start的元素到结尾移植整个"tail"的ArrayList。)
到目前为止我有这个:
public static void transplantBlock( ArrayList<String> fromList,
ArrayList<String> toList,
int start,
int target,
int n ) {
for ( int i = 0; i < n; i++) {
if ( fromList.size() > start) {
fromList.remove(start);
}
}
}
public static void main( String[] args )
{
String[] fromData = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k" };
ArrayList<String> fromList = new ArrayList<String>();
for ( int i = 0; i < fromData.length; i++ )
fromList.add( fromData[ i ] );
String[] toData = { "z", "y", "x", "w", "v", "u", "t", "s" };
ArrayList<String> toList = new ArrayList<String>();
for ( int i = 0; i < toData.length; i++ )
toList.add( toData[ i ] );
transplantBlock( fromList, toList, 6, 3, 4 );
System.out.println( "After:" );
System.out.println( " fromList: " + fromList );
System.out.println( " toList: " + toList );
}
输出应该是这样的:
After:
fromList: [a, b, c, d, e, f, k]
toList: [z, y, x, g, h, i, j, w, v, u, t, s]
我能够从 fromList 中删除正确的元素,但我不知道如何将它们添加到 toList。如果有人能帮我弄清楚我错过了什么,我将不胜感激。谢谢!
(旁注:这是填空作业,因此这不是 class 问题)
跟踪要在何处插入您刚删除的元素的索引:
int insertIndex = target;
for (int i = 0; i < n; i++) {
if (fromList.size() > start) {
String removed = fromList.remove(start);
toList.add(insertIndex, removed);
insertIndex++;
}
}
List
中有一个add(int index, E element)
方法
它应该看起来像:
ArrayList<String> myList = new ArrayList(Arrays.asList("a","b","c","d"));
myList.add(2, "x");
// List should look like [a, b, x, c, d] now
剩下的应该是微不足道的。
public static void transplantBlock( ArrayList<String> fromList,
ArrayList<String> toList,
int start,
int target,
int n )
{
for (int i = 0; i < n; i++)
{
if (fromList.size() > start)
{
String removed = fromList.remove(start);
toList.add(target, removed);
target++;
}
}
}
public static void main( String[] args )
{
String[] fromData = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k" };
ArrayList<String> fromList = new ArrayList<String>();
for ( int i = 0; i < fromData.length; i++ )
fromList.add( fromData[ i ] );
String[] toData = { "z", "y", "x", "w", "v", "u", "t", "s" };
ArrayList<String> toList = new ArrayList<String>();
for ( int i = 0; i < toData.length; i++ )
toList.add( toData[ i ] );
transplantBlock( fromList, toList, 6, 3, 4 );
System.out.println( "After:" );
System.out.println( " fromList: " + fromList );
System.out.println( " toList: " + toList );
}
我课程中的指导是:完成下面静态方法 transplantBlock 的定义,对于任何非负整数 n,从 ArrayList fromList 中从索引开始的元素开始删除一个包含 n 个元素的块,然后插入它们(按顺序)进入一个从索引目标开始的 ArrayList toList。 (如果从索引start的元素到fromList的末尾少于n个元素,则该方法从索引start的元素到结尾移植整个"tail"的ArrayList。)
到目前为止我有这个:
public static void transplantBlock( ArrayList<String> fromList,
ArrayList<String> toList,
int start,
int target,
int n ) {
for ( int i = 0; i < n; i++) {
if ( fromList.size() > start) {
fromList.remove(start);
}
}
}
public static void main( String[] args )
{
String[] fromData = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k" };
ArrayList<String> fromList = new ArrayList<String>();
for ( int i = 0; i < fromData.length; i++ )
fromList.add( fromData[ i ] );
String[] toData = { "z", "y", "x", "w", "v", "u", "t", "s" };
ArrayList<String> toList = new ArrayList<String>();
for ( int i = 0; i < toData.length; i++ )
toList.add( toData[ i ] );
transplantBlock( fromList, toList, 6, 3, 4 );
System.out.println( "After:" );
System.out.println( " fromList: " + fromList );
System.out.println( " toList: " + toList );
}
输出应该是这样的:
After:
fromList: [a, b, c, d, e, f, k]
toList: [z, y, x, g, h, i, j, w, v, u, t, s]
我能够从 fromList 中删除正确的元素,但我不知道如何将它们添加到 toList。如果有人能帮我弄清楚我错过了什么,我将不胜感激。谢谢!
(旁注:这是填空作业,因此这不是 class 问题)
跟踪要在何处插入您刚删除的元素的索引:
int insertIndex = target;
for (int i = 0; i < n; i++) {
if (fromList.size() > start) {
String removed = fromList.remove(start);
toList.add(insertIndex, removed);
insertIndex++;
}
}
List
add(int index, E element)
方法
它应该看起来像:
ArrayList<String> myList = new ArrayList(Arrays.asList("a","b","c","d"));
myList.add(2, "x");
// List should look like [a, b, x, c, d] now
剩下的应该是微不足道的。
public static void transplantBlock( ArrayList<String> fromList,
ArrayList<String> toList,
int start,
int target,
int n )
{
for (int i = 0; i < n; i++)
{
if (fromList.size() > start)
{
String removed = fromList.remove(start);
toList.add(target, removed);
target++;
}
}
}
public static void main( String[] args )
{
String[] fromData = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k" };
ArrayList<String> fromList = new ArrayList<String>();
for ( int i = 0; i < fromData.length; i++ )
fromList.add( fromData[ i ] );
String[] toData = { "z", "y", "x", "w", "v", "u", "t", "s" };
ArrayList<String> toList = new ArrayList<String>();
for ( int i = 0; i < toData.length; i++ )
toList.add( toData[ i ] );
transplantBlock( fromList, toList, 6, 3, 4 );
System.out.println( "After:" );
System.out.println( " fromList: " + fromList );
System.out.println( " toList: " + toList );
}