Truncate a list to a given number of elements

后端 未结 3 807
囚心锁ツ
囚心锁ツ 2020-12-07 17:24

What method truncates a list--for example to the first 100 elements--discarding the others (without iterating through individual elements)?

3条回答
  •  甜味超标
    2020-12-07 17:48

    Use List.subList:

    import java.util.*;
    import static java.lang.Math.min;
    
    public class T {
      public static void main( String args[] ) {
        List items = Arrays.asList("1");
        List subItems = items.subList(0, min(items.size(), 2));
    
        // Output: [1]
        System.out.println( subItems );
    
        items = Arrays.asList("1", "2", "3");
        subItems = items.subList(0, min(items.size(), 2));
    
        // Output: [1, 2]
        System.out.println( subItems );
      }
    }
    

    You should bear in mind that subList returns a view of the items, so if you want the rest of the list to be eligible for garbage collection, you should copy the items you want to a new List:

    List subItems = new ArrayList(items.subList(0, 2));
    

    If the list is shorter than the specified size, expect an out of bounds exception. Choose the minimum value of the desired size and the current size of the list as the ending index.

    Lastly, note that the second argument should be one more than the last desired index.

提交回复
热议问题