import java util Hash Set import java util

  • Slides: 26
Download presentation

import java. util. Hash. Set; import java. util. Scanner; public class Hash. Set. Example

import java. util. Hash. Set; import java. util. Scanner; public class Hash. Set. Example { public static void main(String[] args){ Hash. Set<String> my. Set = new Hash. Set<String>(); Scanner input = new Scanner(System. in); while(input. has. Next()){ String name = input. next(); if (!my. Set. contains(name)){ my. Set. add(name); } } for(String name: my. Set){ System. out. println(name); } Τοποθετούμε στο Hash. Set μόνο τα Strings τα οποία δεν έχουμε ήδη δει (δεν είναι ήδη στο σύνολο) Ένας τρόπος για να διατρέξουμε και να τυπώσουμε τα στοιχεία του Hash. Set Object[] array = my. Set. to. Array(); for (int i = 0; i < array. length; i ++){ String name = (String)array[i]; System. out. println(name); } } } Δήλωση μιας μεταβλητής Hash. Set από Strings. Ένας άλλος τρόπος για να διατρέξουμε το Hash. Set χρησιμοποιώντας την εντολή to. Array(). Ο πίνακας είναι πίνακας από Objects, και πρέπει να κάνουμε downcasting

import java. util. Hash. Map; import java. util. Scanner; Δήλωση μιας μεταβλητής Hash. Map

import java. util. Hash. Map; import java. util. Scanner; Δήλωση μιας μεταβλητής Hash. Map που συσχετίζει Strings (κλειδια) και Integers (τιμές) Για κάθε όνομα (String) το id (Integer) public class Hash. Map. Example 1 { public static void main(String[] args){ Hash. Map<String, Integer> my. Map = new Hash. Map<String, Integer>(); Scanner input = new Scanner(System. in); int counter = 0; while(input. has. Next()){ String name = input. next(); if (!my. Map. contains. Key(name)){ my. Map. put(name, counter); counter ++; } } Διατρέχοντας το Hash. Map Αν το όνομα δεν είναι ήδη στο Hash. Map τότε ανάθεσε στο όνομα αυτό τον επόμενο αύξοντα αριθμό και πρόσθεσε ένα νέο ζευγάρι (όνομα αριθμός) στο Hash. Map. Διέτρεξε το σύνολο με τα κλειδιά (ονόματα) στο Hash. Map for(String name: my. Map. key. Set()){ System. out. println(name + ": "+ my. Map. get(name)); } } } Για κάθε κλειδί (όνομα) πάρε το id που αντιστοιχεί στο όνομα αυτό και τύπωσε το.

import java. util. Hash. Map; import java. util. Scanner; public class Hash. Map. Example

import java. util. Hash. Map; import java. util. Scanner; public class Hash. Map. Example 2 { public static void main(String[] args){ Hash. Map<String, Person> my. Map = new Hash. Map<String, Person>(); Scanner input = new Scanner(System. in); int counter = 0; while(input. has. Next()){ String name = input. next(); if (!my. Map. contains. Key(name)){ Person p = new Person(name, counter); my. Map. put(name, p); counter ++; Δημιουργούμε ένα Hash. Map το οποίο } σε κάθε διαφορετικό όνομα αντιστοιχεί } ένα αντικείμενο Person. for(String name: my. Map. key. Set()){ System. out. println(my. Map. get(name)); } } } Καλείται η to. String της κλάσης Person

import java. util. Hash. Set; import java. util. Iterator; import java. util. Scanner; public

import java. util. Hash. Set; import java. util. Iterator; import java. util. Scanner; public class Iterator. Example { public static void main(String[] args){ Hash. Set<String> my. Set = new Hash. Set<String>(); Scanner input = new Scanner(System. in); while(input. has. Next()){ if (!my. Set. contains(name)){ my. Set. add(input. next()); } } Διατρέχει το σύνολο και αν βρει το Iterator it = my. Set. iterator(); String “a” το αφαιρεί από το σύνολο. while (it. has. Next()){ if (it. next(). equals("a")){ it. remove(); Πρέπει να κάνουμε break γιατί αν break; αφαιρέσουμε μία τιμή ενώ διατρέχουμε το } σύνολο μπορεί να προκληθεί λάθος. } it = my. Set. iterator(); Ξανα-διατρέχουμε τον πίνακα. while (it. has. Next()){ Ο iterator πρέπει να ξανα-οριστεί για System. out. println(it. next()); να ξεκινήσει από την αρχή του } } } συνόλου.

import java. util. Hash. Set; import java. util. Iterator; import java. util. Scanner; public

import java. util. Hash. Set; import java. util. Iterator; import java. util. Scanner; public class Iterator. Example { public static void main(String[] args){ Hash. Set<String> my. Set = new Hash. Set<String>(); Scanner input = new Scanner(System. in); while(input. has. Next()){ if (!my. Set. contains(name)){ my. Set. add(input. next()); } } for (String s: my. Set){ if (s. equals("a")){ my. Set. remove(s); break; } } for (String s: my. Set){ System. out. println(s); } } } Αντί του Iterator θα μπορούσαμε να χρησιμοποιήσουμε το γνωστό for-each

import java. util. *; public class List. Iterator. Example { public static void main(String[]

import java. util. *; public class List. Iterator. Example { public static void main(String[] args){ Array. List<String> array = new Array. List<String>(); Scanner input = new Scanner(System. in); while(input. has. Next()){ String name = input. next(); array. add(name); } List. Iterator<String> it = array. list. Iterator(); while (it. has. Next()){ if (it. next(). equals("a")){ it. set("b"); it. add("c"); } } it = array. list. Iterator(); while (it. has. Next()){ System. out. println(it. next()); } } }

Ορισμός Hash. Map<Integer, Student> all. Students; Ορισμός class Student { private int AM; private

Ορισμός Hash. Map<Integer, Student> all. Students; Ορισμός class Student { private int AM; private Hash. Map<Integer, Student. Record> courses; . . . pubic Hash. Map<Integer, Student. Record> get. Courses{ return courses; } } Ορισμός class Student. Record { private double grade; . . . public double get. Grade{ return grade; } } Χρήση all. Students. get(469). get. Courses(). get(205). get. Grade() ;

import java. util. *; class Array. Hash. Comparison { public static void main(String[] args){

import java. util. *; class Array. Hash. Comparison { public static void main(String[] args){ Array. List<Integer> array = new Array. List<Integer>(); for (int i =0; i < 100000; i ++){ array. add(i); } Hash. Set<Integer> set = new Hash. Set<Integer>(); for (int i =0; i < 100000; i ++){ set. add(i); } Array. List<Integer> random. Numbers = new Array. List<Integer>(); Random rand = new Random(); for (int i = 0; i < 100000; i ++){ random. Numbers. add(rand. next. Int(200000 )); } long start. Time = System. current. Time. Millis(); for (Integer x: random. Numbers){ Με το Array. List κάνουμε περίπου boolean b = array. contains(x); 200000*100000 συγκρίσεις } long end. Time = System. current. Time. Millis(); long duration = (end. Time - start. Time); System. out. println("Array took "+ duration + " millisecs"); start. Time = System. current. Time. Millis(); for (Integer x: random. Numbers){ Με το Hash. Set κάνουμε boolean b = set. contains(x); 200000 συγκρίσεις } end. Time = System. current. Time. Millis(); duration = (end. Time - start. Time); System. out. println("Set took "+duration + " millisecs "); } } περίπου