繁体   English   中英

将元素从一个ArrayList移动​​到另一个

[英]Moving elements from one ArrayList to another

本课中的指示是:完成以下静态方法migrationBlock的定义,该方法对于任何非负整数n,从索引开头的元素开始,从ArrayList fromList的ArrayList中删除n个元素的块,并将它们插入(按顺序)从索引目标开始到ArrayList toList中。 (如果从索引开头到fromList结束的元素少于n个元素,则该方法将从索引开头到结尾的元素移植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。 如果有人可以帮助我弄清我的缺失,我将非常感激。 谢谢!

(旁注:这是填空作业,所以这不是班级问题)

跟踪索引,将刚刚删除的元素插入到哪里:

int insertIndex = target;
for (int i = 0; i < n; i++) {
    if (fromList.size() > start) {
        String removed = fromList.remove(start);
        toList.add(insertIndex, removed);
        insertIndex++;
    }
}

有一个add(int index, E element)在方法List

它看起来应该像这样:

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 );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM