1 3 5 22 23 package edu.neu.ccs.jmk; 24 25 30 public final class StringList 31 implements Value 32 { 33 private String string; 34 private StringList rest; 35 36 42 public StringList(String string, StringList rest) { 43 if (string == null) 44 throw new NullPointerException (); 45 this.string = string; 46 this.rest = rest; 47 } 48 49 52 public StringList(String string) { 53 this(string, null); 54 } 55 56 59 public String getString() { 60 return string; 61 } 62 63 66 public StringList getRest() { 67 return rest; 68 } 69 70 75 void setRest(StringList rest) { this.rest = rest; 77 } 78 79 82 public static boolean isStringList(Value v) { 83 return v == null || v instanceof StringList; 84 } 85 86 89 public static int length(StringList sl) { 90 int len = 0; 91 for (; sl != null; sl = sl.rest) 92 len++; 93 return len; 94 } 95 96 99 public static String [] list2array(StringList sl) { 100 int len = length(sl); 101 String [] result = new String [len]; 102 for (int i = 0; sl != null; sl = sl.rest) 103 result[i++] = sl.string; 104 return result; 105 } 106 107 110 public static StringList array2list(String [] sa) { 111 StringList result = null; 112 if (sa != null) 113 for (int i = sa.length - 1; i >= 0; i--) 114 result = new StringList(sa[i], result); 115 return result; 116 } 117 118 121 public static StringList append(StringList sl1, StringList sl2) { 122 if (sl2 == null) 123 return sl1; 124 else if (sl1 == null) 125 return sl2; 126 else { 127 StringList sl0 = new StringList(sl1.getString()); 128 StringList last = sl0; 129 for (sl1 = sl1.getRest(); sl1 != null; sl1 = sl1.getRest()) { 130 StringList temp = new StringList(sl1.getString()); 131 last.rest = temp; 132 last = temp; 133 } 134 last.setRest(sl2); 135 return sl0; 136 } 137 } 138 } 139 | Popular Tags |