Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                    
                
        

我目前在Java中的课程是关于ArrayLists的,我很难理解这段代码:
本练习涉及从ArrayList删除项目块的问题。

public static void deleteBlock( ArrayList<String> strings, int n )
{
    for ( int i = 0; i < n; i++ ) // the for loop for checking each index
    {
        if ( strings.size() > 0 ) // if statement to check whether or not the array's size is > 0
            strings.remove( i );  // removes the index of the array at (i)
    }
}

public static void main( String[] args )
{
    String[] data = { "erosion", "rosion", "osion", "sion", "ion", "on", "n" };  //array being tested
    ArrayList<String> dataList = new ArrayList<String>();
    for ( int i = 0; i < data.length; i++ )
        dataList.add( data[ i ] );

    deleteBlock( dataList, 3 );
    System.out.println( dataList ); // printing out the result
}


这是输出:[rosion, sion, on, n]

如果有人可以帮忙解释一下该代码背后的处理过程?谢谢!

最佳答案

请注意以下代码(更好地调试!):

for ( int i = 0; i < n; i++ )
{
    if ( strings.size() > 0 )
        strings.remove( i );
}


i = 0时发生了什么:


  [“腐蚀”,“腐蚀”,“渗透”,“腐蚀”,“离子”,“上”,“ n”] => [“腐蚀”,
  “ osion”,“ sion”,“ ion”,“ on”,“ n”]


第0个元素已删除。

然后当i = 1时:


  [“ rosion”,“ osion”,“ sion”,“ ion”,“ on”,“ n”] => [“ rosion”,
  “ sion”,“ ion”,“ on”,“ n”]


第一个元素已删除。

最后,当i = 2时:


  [“ rosion”,“ sion”,“ ion”,“ on”,“ n”] => [“ rosion”,“ sion”,“ on”,
  “ n”]


第二个元素已删除。

现在,如果您希望代码仅删除前三个元素,则可以执行以下操作:

for ( int i = 0; i < n; i++ )
{
    if ( strings.size() > 0 )
        strings.remove( 0 );
}

关于java - ArrayList执行的过程是什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27832840/

10-09 04:11