Advertisement
Guest User

Untitled

a guest
May 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.43 KB | None | 0 0
  1. package aufgabe2;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. public class CharCollection {
  7.     private List<Character> chars = new ArrayList<>(); //neue Arraylist, mit Funktionen von "List"
  8.  
  9.     CharCollection(CharCollection cc){ //erstellen einer Liste mit Inhalt der Sammlung, exakte Kopie
  10.         List<Character> chars = new ArrayList<>(); //neue Arraylist
  11.        
  12.         for(int i = 0; i < cc.size(); i++) { //if schleife arbeitet cc ab
  13.             chars.add(cc.getChars().get(i)); //characters an der Stelle i werden der Collection hinzugefügt
  14.         }
  15.        
  16.         setChars(chars); //Characters werden mit set in die Klassenvariable geschrieben
  17.     }
  18.    
  19.     CharCollection(char... cs) { //erstellen einer CharCollection aus einem Array
  20.         List<Character> chars = new ArrayList<>(); //neue Arraylist
  21.        
  22.         for(int i = 0; i < cs.length; i++) { //for schleife arbeitet cs ab
  23.             chars.add(cs[i]); //Characters an der Stelle i im Array werden der Liste hinzugefügt
  24.         }
  25.        
  26.         setChars(chars); //Characters werden mit set in die Klassenvariable geschrieben
  27.     }
  28.    
  29.     CharCollection(String s){ //erzeugt aus Buchstabensammlung einen String
  30.         List<Character> chars = new ArrayList<>(); //neue Arraylist
  31.        
  32.         for(int i = 0; i < s.length(); i++) { //for schleife arbeitet s ab
  33.             chars.add(s.charAt(i)); //Characters an der Stelle i werden dem String hinzugefügt
  34.         }
  35.        
  36.         setChars(chars); //Characters werden mit set in die Klassenvariable geschrieben
  37.     }
  38.    
  39.     public int size() { //größe der Buchstabensammlung
  40.         return chars.size(); //gibt die Anzahl der Characters zurück
  41.     }
  42.    
  43.     public int count(char c) { //zählt vorkommen des übergebenen Buchstabens und liefert Anzahl zurück
  44.         Character c2 = c; // neuer Character c2 wird erstellt
  45.         int count = 0; //int count, zum Zählen des Buchstabens wird zu Anfang auf 0 gesetzt
  46.        
  47.         for(int i = 0; i < size(); i++) { //for schleife arbeitet Buchstabensammlung durch
  48.             if(getChars().get(i).equals(c2)) { //prüft ob Characters an der Stelle i gleich c2 ist
  49.                 count++; //falls das zutrifft, wird count um 1 erhöht
  50.             }
  51.         }
  52.        
  53.         return count; //gibt zurück wie oft der Buchstabe vorkommt
  54.     }
  55.    
  56.     public int different() { //gibt die Anzahl verschiedener Buchstaben zurück
  57.         List<Character> tmp = new ArrayList<>(); //neue Arraylist
  58.        
  59.         for(int i = 0; i < size(); i++) { //for schleife arbeitet Buchstabensammlung durch
  60.             if(!tmp.contains(chars.get(i))) { //falls tmp noch nicht den Character an der Stelle i enthält
  61.                 tmp.add(chars.get(i)); //wird dieser in tmp gespeichert
  62.             }
  63.         }
  64.        
  65.         return tmp.size(); //gibt Anzahl der Chars zurück
  66.     }
  67.    
  68.     public char top() { //liefert den Buchstaben der am häufigsten vorkommt
  69.         if(size() == 0) { //prüft ob Buchstabensammlung leer ist
  70.             return 0; //wenn ja wird eine 0 zurückgegeben
  71.         }
  72.        
  73.         int topCharIndex = 0; //Index des Characters, welcher am häufigsten vorkommt
  74.         int topCharAmount = 0; //Anzahl wie oft der topChar vorkommt
  75.        
  76.         for(int i = 0; i < size(); i++) { //for schleife arbeitet Buchstabensammlung durch
  77.             if(count(chars.get(i)) > topCharAmount) { //wenn eine Buchstabe an der Stelle i öfter vorkommt als topCharAmount
  78.                 topCharAmount = count(chars.get(i)); //dann wird Anzahl der Buchstaben in topCharAmount gespeichert
  79.                 topCharIndex = i; //und Index i wird in topCharIndex gespeichert
  80.             }
  81.         }
  82.        
  83.         return chars.get(topCharIndex); //gibt den Buchstaben zurück, welcher am häufigsten vorkommt
  84.     }
  85.    
  86.     public String toString() { //liefert lesbare Darstellung der Characters
  87.         String s = "("; //erstellen eines Strings s mit geöffneter Klammer
  88.        
  89.         for(int i = 0; i < size(); i++) { //for schleife arbeitet Buchstabensammlung durch
  90.             s += chars.get(i); //Characters an der Stelle i werden s hinzugefügt
  91.             if(i < size()-1) {
  92.                 s += ", "; //hinter jedem Character, bis auf das Letzte, wird ein Komma gesetzt
  93.             }
  94.         }
  95.        
  96.         s += ")"; //Klammer wird geschlossen
  97.         return s; //und String s zurückgegeben
  98.     }
  99.    
  100.     public CharCollection moreThan(int m) { //liefert Buchstaben die mehr als m mal vorkommen, m wird übergeben
  101.         CharCollection returnCollection = new CharCollection(""); //leere CharCollection wird erstellt
  102.        
  103.         for(int i = 0; i < size(); i++) { //for schleife arbeitet Buchstabensammlung durch
  104.             if(count(this.chars.get(i)) > m) { //zählt Buchstaben und prüft ob Anzahl des Buchstabens an Stelle i schon größer ist als m
  105.                 returnCollection.getChars().add(this.getChars().get(i));  //fügt der CharCollection den am häufigsten vorkommenden Buchstaben zu
  106.             }
  107.         }
  108.        
  109.         return returnCollection; //gibt die CharCollection zurück
  110.     }
  111.    
  112.     public boolean equals(Object x) { //prüft ob x eine Sammlung mit den gleichen Buchstaben ist
  113.         if(x instanceof CharCollection) { //Prüft ob x Objekt der Klasse CharCollection ist
  114.             for(int i = 0; i < size(); i++) { //for schleife arbeitet Buchstabensammlung durch
  115.                 Character tmp = this.getChars().get(i); //liefert Character an der Stelle i
  116.                 if(((CharCollection) x).count(tmp) != this.count(tmp)) { //prüft ob ein Buchstabe unterschiedlich oft vorkommt
  117.                     return false; //wenn ja, wird false zurückgegeben
  118.                 }
  119.             }
  120.             return true; //
  121.         } else {
  122.             return false; //
  123.         }
  124.     }
  125.    
  126.     public CharCollection except(CharCollection cc) { //liefert neue Buchstabensammlung, wobei alle Buchstaben von cc entfernt wurden
  127.         CharCollection ccReturn = new CharCollection(this); //neue CharCollection ccReturn, in welcher das this Objekt gespeichert wird
  128.        
  129.         for(int i = 0; i < cc.size(); i++) { //for schleife arbeitet cc durch
  130.             char tmp = cc.getChars().get(i); //zwischenspeichern von den Characters an der Stelle i
  131.             for(int j = 0; j < ccReturn.size(); j++) { //for schleife arbeitet ccReturn durch
  132.                 if(tmp == ccReturn.getChars().get(j)) { //prüfe ob tmp gleich den Characters an der Stelle j ist
  133.                     ccReturn.getChars().remove(j); //wenn ja, entferne die Chars an Stelle j
  134.                     break; //gehe aus for schleife raus
  135.                 }
  136.             }
  137.         }
  138.        
  139.         return ccReturn; //gibt CharCollection zurück
  140.     }
  141.    
  142.     public boolean isSubset(CharCollection cc) { //prüft ob übergebene Sammlung in Sammlung vorhanden ist
  143.         for(int i = 0; i < cc.size(); i++) { //for schleife arbeitet cc durch
  144.             if(cc.count(cc.getChars().get(i)) >  this.count(cc.getChars().get(i))) { //prüfe ob Anzahl der Buchstaben in cc größer ist als im this Objekt
  145.                 return false; //wenn ja kann cc nicht in this enthalten sein
  146.             }
  147.         }
  148.         return true; //wenn nicht wird true zurückgegeben
  149.     }
  150.  
  151.     public List<Character> getChars() {
  152.         return chars; //gibt chars zurück
  153.     }
  154.  
  155.    
  156.     public void setChars(List<Character> chars) {
  157.         this.chars = chars; //
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement