class User{
int age;
String name;
bool magic;
Function scream;
User(this.age, this.name, this.magic, this.scream);
Map<String ,dynamic> toMap(){
return {
'age':age,
'name': name,
'magic':magic,
'scream':scream
};
}
}
//Exercise
class HashTable {
late List<dynamic> data;
HashTable(size){
this.data = List.filled(size, null);
}
_hash(String key) {
var hash = 0;
for (var i =0; i < key.length; i++){
hash = (hash + key.codeUnitAt(i) * i) % this.data.length ;
}
return hash;
}
set(key, value){
var address = _hash(key);
if(this.data[address] == null) {
// make data[address] to be an empty array
this.data[address] = [];
}
this.data[address].add([key, value]);
// print(data);
// if(this.size >= this.size)
// this.size++;
}
get(key){
var address = _hash(key);
var currentBucket = this.data[address];
print(currentBucket);
if(currentBucket != null){
for(var i = 0; i < currentBucket.length; i++){
if(currentBucket[i][0] == key){
print(currentBucket[i][1]);
return currentBucket[i][1];
}
}
}
return currentBucket;
}
keys(){
var keyArrays = [];
for(var i = 0; i < this.data.length; i++){
if(this.data[i] != null){
print(this.data[i][0][0]);
keyArrays.add(this.data[i][0][0]);
}
}
}
}
void main() {
Map<String, dynamic> users = {
'age': 54,
'name': 'Emma',
'magic': true,
'scream': (){
print('aaaah ewoo!');
},
};
// User user = new User(54,'Emma', true, (){
// print('aaaah ewoo!');
// }, );
// Map<String, dynamic> users = user.toMap();
// print(users['scream']());
// users['spell'] = 'abra ka ta abara';
// print(users['spell']);
// const = new Map(); // stores keys and values
// const = new Set(); // stores only keys
//Exercise
HashTable myHashTable = new HashTable(50);
// do a set function that set grapes as the first index of the array
myHashTable.set('grapes', 10000);
myHashTable.set('grapes', 1000);
// then do a get method to get the grapes
myHashTable.set('apples', 9);
myHashTable.set('orenges', 93);
myHashTable.get('apples');
myHashTable.keys();
// myHashTable.get('apples');
// print(myHashTable.data);
}