001 package com.croftsoft.core.util.seq; 002 003 import java.util.LinkedList; 004 import java.util.List; 005 006 /*********************************************************************** 007 * Example implementation of Seq as an accessor interface. 008 * 009 * For a description, please see the online tutorial 010 * <a target="_blank" 011 * href="https://www.croftsoft.com/library/tutorials/seq"> 012 * Interface Seq</a>. 013 * 014 * @version 015 * $Id: SeqExample.java,v 1.5 2008/04/19 21:27:13 croft Exp $ 016 * @since 017 * 2007-04-30 018 * @author 019 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 020 ***********************************************************************/ 021 022 public final class SeqExample 023 implements Seq<CharSequence> 024 //////////////////////////////////////////////////////////////////////// 025 //////////////////////////////////////////////////////////////////////// 026 { 027 028 private final List<StringBuilder> stringBuilderList; 029 030 //////////////////////////////////////////////////////////////////////// 031 // static methods 032 //////////////////////////////////////////////////////////////////////// 033 034 public static void main ( final String [ ] args ) 035 //////////////////////////////////////////////////////////////////////// 036 { 037 // Create an implementation and mutate 038 039 final SeqExample seqExample = new SeqExample ( args ); 040 041 seqExample.append ( ".java" ); 042 043 // Create a read-only accessor interface reference for viewing 044 045 final Seq<CharSequence> filenameSeq = seqExample; 046 047 final int size = filenameSeq.size ( ); 048 049 for ( int index = 0; index < size; index++ ) 050 { 051 final CharSequence charSequence = filenameSeq.get ( index ); 052 053 System.out.println ( charSequence ); 054 } 055 } 056 057 //////////////////////////////////////////////////////////////////////// 058 // constructor methods 059 //////////////////////////////////////////////////////////////////////// 060 061 public SeqExample ( final CharSequence [ ] charSequenceArray ) 062 //////////////////////////////////////////////////////////////////////// 063 { 064 stringBuilderList = new LinkedList<StringBuilder> ( ); 065 066 for ( final CharSequence charSequence : charSequenceArray ) 067 { 068 stringBuilderList.add ( new StringBuilder ( charSequence ) ); 069 } 070 } 071 072 //////////////////////////////////////////////////////////////////////// 073 // accessor interface methods 074 //////////////////////////////////////////////////////////////////////// 075 076 public int size ( ) 077 //////////////////////////////////////////////////////////////////////// 078 { 079 return stringBuilderList.size ( ); 080 } 081 082 public CharSequence get ( final int index ) 083 //////////////////////////////////////////////////////////////////////// 084 { 085 return stringBuilderList.get ( index ); 086 } 087 088 //////////////////////////////////////////////////////////////////////// 089 // mutator methods 090 //////////////////////////////////////////////////////////////////////// 091 092 public void append ( final CharSequence charSequence ) 093 //////////////////////////////////////////////////////////////////////// 094 { 095 for ( final StringBuilder stringBuilder : stringBuilderList ) 096 { 097 stringBuilder.append ( charSequence ); 098 } 099 } 100 101 //////////////////////////////////////////////////////////////////////// 102 //////////////////////////////////////////////////////////////////////// 103 }