Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
641
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.16 KB | None | 0 0
  1. package zad1;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.Iterator;
  6. import java.util.List;
  7.  
  8. public class XList<T> implements Collection<T>{
  9. List<T> insideList;
  10.  
  11. public XList(Collection<T> inCol){
  12. insideList = new ArrayList<T>();
  13. for (T elem : inCol) insideList.add(elem);
  14. }
  15. public XList(T... args){
  16. insideList = new ArrayList<T>();
  17. for (T elem : args) insideList.add(elem);
  18. }
  19.  
  20. public static<T> XList<T> of(T... args){
  21. return new XList<T>(args);
  22. }
  23.  
  24. public static<T> XList<T> of(Collection<T> coll){
  25. return new XList<T>(coll);
  26. }
  27.  
  28. public static XList<String>charsOf(String s){
  29. List<String> list = new ArrayList<String>();
  30. for(char c : s.toCharArray()){
  31. list.add(String.valueOf(c));
  32. }
  33. return new XList<String>(list);
  34. }
  35.  
  36. public static XList<String> tokensOf(String s){
  37. return tokensOf(s, "( )|(\t)|(\r)|(\n)");
  38. }
  39. public static XList<String> tokensOf(String s, String separator){
  40. return new XList<String>(s.split(separator));
  41. }
  42.  
  43. public XList<T> union(Collection<T> coll){
  44. List<T> toUnite = new ArrayList<T>(coll);
  45. toUnite = insideList;
  46. for(T elem : coll){
  47. toUnite.add(elem);
  48. }
  49. return new XList<T>(toUnite);
  50. }
  51.  
  52. @Override
  53. public String toString() {
  54. String toReturn = "[";
  55. for (int i=0; i<insideList.size(); i++ ){
  56. toReturn = toReturn+insideList.get(i);
  57. if(i < insideList.size()-1)
  58. toReturn = toReturn + ",";
  59. }
  60. toReturn=toReturn+"]";
  61. return toReturn;
  62. }
  63.  
  64. @Override
  65. public int size() {
  66. return 0;
  67. }
  68.  
  69. @Override
  70. public boolean isEmpty() {
  71. return false;
  72. }
  73.  
  74. @Override
  75. public boolean contains(Object o) {
  76. return false;
  77. }
  78.  
  79. @Override
  80. public Iterator<T> iterator() {
  81. return null;
  82. }
  83.  
  84. @Override
  85. public Object[] toArray() {
  86. return new Object[0];
  87. }
  88.  
  89. @Override
  90. public <T1> T1[] toArray(T1[] a) {
  91. return null;
  92. }
  93.  
  94. @Override
  95. public boolean add(T t) {
  96. return false;
  97. }
  98.  
  99. @Override
  100. public boolean remove(Object o) {
  101. return false;
  102. }
  103.  
  104. @Override
  105. public boolean containsAll(Collection<?> c) {
  106. return false;
  107. }
  108.  
  109. @Override
  110. public boolean addAll(Collection<? extends T> c) {
  111. return false;
  112. }
  113.  
  114. @Override
  115. public boolean removeAll(Collection<?> c) {
  116. return false;
  117. }
  118.  
  119. @Override
  120. public boolean retainAll(Collection<?> c) {
  121. return false;
  122. }
  123.  
  124. @Override
  125. public void clear() {
  126.  
  127. }
  128. }
  129.  
  130.  
  131. /**
  132. *
  133. * @author Bany Jan S16103
  134. *
  135. */
  136.  
  137. package zad1;
  138.  
  139.  
  140. import java.util.*;
  141.  
  142. // Plik Main.java może być dowolnie modyfikowany,
  143. // ale punkty uzyskuje się za właściwe dzialanie poszczególnych pokazanych tu metod klasy XList.
  144.  
  145. // Jeżeli nie oprogramujemy wszystkich metod, to z klasy Main nalezy usunąć te fragmenty,
  146. // które powodują błędy w kompilacji - w przeciwnym razie nie uzyskamy punktów.
  147.  
  148. public class Main {
  149. public static void main(String[] args) {
  150. // Pewne dodatkowe zestawy danych
  151. Integer[] ints = { 100, 200, 300 };
  152. Set<Integer> set = new HashSet<>(Arrays.asList(3, 4, 5));
  153.  
  154. // Sposoby tworzenia
  155. XList<Integer> list1 = new XList<>(1, 3, 9, 11);
  156. XList<Integer> list2 = XList.of(5, 6, 9);
  157. XList<Integer> list3 = new XList(ints);
  158. XList<Integer> list4 = XList.of(ints);
  159. XList<Integer> list5 = new XList(set);
  160. XList<Integer> list6 = XList.of(set);
  161.  
  162. System.out.println(list1);
  163. System.out.println(list2);
  164. System.out.println(list3);
  165. System.out.println(list4);
  166. System.out.println(list5);
  167. System.out.println(list6);
  168.  
  169. // --- i pomocnicze metody do tworzenia z napisów
  170. XList<String> slist1 = XList.charsOf("ala ma kota");
  171. XList<String> slist2 = XList.tokensOf("ala ma kota");
  172. XList<String> slist3 = XList.tokensOf("A-B-C", "-");
  173.  
  174. System.out.println(slist1);
  175. System.out.println(slist2);
  176. System.out.println(slist3);
  177.  
  178. // Metoda union - suma elementów
  179. List<Integer> m1 = list1.union(list2); // oczywiście, można podstawiać na List
  180. System.out.println(m1);
  181. // można wykonywać wszystkie operacje z interfejsu List, np:
  182. /*m1.add(11);
  183. System.out.println(m1);
  184. XList<Integer> m2 = (XList<Integer>) m1;
  185. XList<Integer> m3 = m2.union(ints).union(XList.of(4, 4));
  186. System.out.println(m2); // m2 się nie zmienia
  187. System.out.println(m3); // wynik jest w m3
  188. m3 = m3.union(set);
  189. System.out.println(m3);
  190.  
  191. // Widzieliśmy metode union
  192. // Teraz metoda diff(dowolna kolekcja)
  193. System.out.println(m3.diff(set)); // wszystko z m3, co nie jest w set
  194. System.out.println(XList.of(set).diff(m3)); // co jest w set, czego nie ma w m3
  195.  
  196. // Metoda unique -zwraca nową Xlist bez duplikatow
  197. XList<Integer> uniq = m3.unique(); // lista, nie Set
  198. System.out.println(uniq);
  199.  
  200. // kombinacje (kolejność jest istotna)
  201. List<String> sa = Arrays.asList( "a", "b");
  202. List<String> sb = Arrays.asList( "X", "Y", "Z" );
  203. XList<String> sc = XList.charsOf( "12" );
  204. XList toCombine = XList.of(sa, sb, sc);
  205. System.out.println(toCombine);
  206. XList<XList<String>> cres = toCombine.combine();
  207. System.out.println(cres);
  208.  
  209. // collect i join
  210. XList<String> j1 = cres.collect( list -> list.join());
  211. System.out.println(j1.join(" "));
  212. XList<String> j2 =cres.collect( list -> list.join("-"));
  213. System.out.println(j2.join(" "));
  214.  
  215. // forEachWithIndex
  216. XList<Integer> lmod = XList.of(1,2,8, 10, 11, 30, 3, 4);
  217. lmod.forEachWithIndex( (e, i) -> lmod.set(i, e*2));
  218. System.out.println(lmod);
  219. lmod.forEachWithIndex( (e, i) -> { if (i % 2 == 0) lmod.remove(e); } );
  220. System.out.println(lmod);
  221. lmod.forEachWithIndex( (e, i) -> { if (i % 2 == 0) lmod.remove(i); } );
  222. System.out.println(lmod); // Pytanie: dlaczego mamy taki efekt? */
  223.  
  224. }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement