A collection represents a group of objects, called elements, bound together in different, useful ways. Elements can be added to, removed from or iterated over in a collection. Collections must provide ways to query for state and existence. Here is the set of responsibilities:
Correspondingly, any collection will:
Here's an example of using Collections with a list or array. This take input as a String or String[], turns it into a List< String >, optionally sorts it and optionally creates a String[] or String for output purposes.
(There's a great deal more to collections than what's here. I'll come back and expand it some another time.)
The important bits of what's going on below here are:
List< String > list = new ArrayList< String >(); for( int i = 0; i < this.array.length; i++ ) list.add( this.array[ i ] );
Collections.sort( list );
int arrayLength = list.size(); String[] stringArray = new String[ arrayLength ]; for( int i = 0; i < arrayLength; i++ ) stringArray[ i ] = list.get( i );
StringBuilder sb = new StringBuilder(); for( int i = 0; i < list.size(); i++ ) sb.append( list.get( i ) + " " ); String string = sb.toString();
package com.etretatlogiciels.examples.collections; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * This class demonstrates some possible somersaults in the life-cycle of a * String becoming String array becoming sorted Collection. * * To stifle perniciousness, the object must start off with a String which * cannot be changed thereafter: one initial value per one instantiation of * this class. */ public class StringArrayToCollection { private String[] array = null; private List< String > list = null; /** * Easier start by supplying a simple, space-delimited string such as * a sentence. * * @param toParse - the string to be parsed into an array of String. */ public StringArrayToCollection( String toParse ) { if( array == null ) array = toParse.split( " " ); makeList(); } /** * The basic characteristic of the initial state of an object of this * class is the String array. * * @param array - String[] of any number of elements. */ public StringArrayToCollection( String[] array ) { if( array == null ) this.array = array; makeList(); } private void makeList() { if( this.array == null ) return; List< String > list = new ArrayList< String >(); for( int i = 0; i < this.array.length; i++ ) list.add( this.array[ i ] ); this.list = list; } /** * Sort the string array. This is destructive in the sense that the * original order is lost. Note that words beginning with an upper-case * letter will sort in front since we're not doing anything to neutralize * case, though we could easily do that by using the version of sort() * that accepts a Comparator. * * @return the sorted string array. */ public List< String > sort() { Collections.sort( this.list ); return this.list; } /** * Turn the string (list) into an array of String--seems to satisfy the * requirements. * * @return the string array. */ public String[] toArray() { int arrayLength = this.list.size(); String[] stringArray = new String[ arrayLength ]; for( int i = 0; i < arrayLength; i++ ) stringArray[ i ] = this.list.get( i ); return stringArray; } /** * Return the string (list) to a simple string, easier to display using * System.out.println(). If sorted, this will be little more than a * jumble of words. */ public String toString() { StringBuilder sb = new StringBuilder(); for( int i = 0; i < this.list.size(); i++ ) sb.append( this.list.get( i ) + " " ); String string = sb.toString(); if( string.endsWith( " " ) ) string = string.substring( 0, string.length() - 1 ); return string; } }