package com.tutego.insel.util.list;

import java.util.*;

public class ListDemo
{
  @SuppressWarnings("unchecked")
  public static void main( String[] args )
  {
    List<Object> list1 = new ArrayList<Object>();
    
    // Hinzufügen
    
    list1.add( "b" );
    list1.add( 0, "a" );
    list1.add( "i" );
    
    List<String> list2 = new ArrayList<String>();
    list2.add( "I" );
    
    list1.add( list2 );
    list1.addAll( 3, list2 );
    list1.add( "a" );
    
    System.out.println( list1 );        // [a, b, i, I, [I], a]
    
    
    // Abfrage-und Suchfunktionen
    
    boolean b = list1.contains( "a" );
    System.out.println( b );            // true
    
    b = list1.containsAll( list2 );
    System.out.println( b );            // true
    
    list2.add( "I2" );
    b = list1.containsAll( list2 );
    System.out.println( b );            // false
    System.out.println( list1 );        // [a, b, i, I, [I, I2], a]
    
    Object o = list1.get( 1 );
    System.out.println( o );            // b
    
    int i = list1.indexOf( "i" );
    System.out.println( i );            // 2
    
    i = list1.lastIndexOf( "a" );
    System.out.println( i );            // 5
    
    b = list1.isEmpty();
    System.out.println( b );            // false
    
    b = new ArrayList().isEmpty();
    System.out.println( b );            // true
    
    
    // Teilfelder bilden
    
    Object array[] = list1.toArray();
    System.out.println( array[3] );     // "I"
    
    list2 = new ArrayList<String>();    // Menge mit a bilden
    list2.add( "a" );
    
    List<Object> list3 = new ArrayList<Object>();
    list3.addAll( list1 );              // tb enthält Elemente aus a
    list3.retainAll( list2 );           // Schnitt bilden
    System.out.println( list3 );        // [a, a]
    
    // Löschen und verändern
     
        list1.remove( 4 );
        System.out.println( list1 );        // [a, b, i, I, a]
    
    list1.remove( "I" );
    System.out.println( list1 );        // [a, b, i, a]
    
    list1.set( 1, new ArrayList() );
    System.out.println( list1 );        // [a, [], i, a]
    System.out.println( list1.size() ); // 4
    
    list1.clear();
    System.out.println( list1 );        // []
    System.out.println( list1.size() ); // 0
  }
}
