Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/main/java/basic/datastructure/map/AbstractMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package basic.datastructure.map;

public abstract class AbstractMap<K,V> implements Map<K,V>{


protected void checkNullKey(K key){
if(key==null) throw new NullPointerException();
}
}
106 changes: 106 additions & 0 deletions src/main/java/basic/datastructure/map/ListMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
package basic.datastructure.map;

import basic.datastructure.list.ArrayList;

public class ListMap<K,V> extends AbstractMap<K, V> {

ArrayList<Node> list;

public ListMap(){
list = new ArrayList<>();
}

private int findIndexByKey(K key){
checkNullKey(key);
for(int i =0 ;i<list.getSize();i++){
if(list.get(i).key.equals(key)){
return i;
}
}

return -1;
}

@Override
public void put(K key, V value) {
checkNullKey(key);
int index = findIndexByKey(key);

if(index==-1) list.add(new Node(key,value));

else list.get(index).setValue(value);
}

@Override
public boolean containsKey(K key) {
checkNullKey(key);
return findIndexByKey(key)!=-1;
}

@Override
public V get(K key) {
checkNullKey(key);
int index = findIndexByKey(key);

return (index!=-1)?list.get(index).getValue():null;

}

@Override
public V remove(K key) {
checkNullKey(key);
int index = findIndexByKey(key);

if(index==-1) return null;
else{
V value = list.get(index).getValue();
list.remove(list.get(index));
return value;
}

}

@Override
public void clear() {
list = new ArrayList<>();
}

@Override
public int size() {
return list.getSize();
}

@Override
public boolean isEmpty() {
return list.getSize()==0;
}

private class Node implements Map.Entry<K,V>{

private K key;

private V value;

Node(K key, V value){
this.key = key;

this.value = value;
}

@Override
public K getKey() {
return this.key;
}

@Override
public V getValue() {
return this.value;
}

@Override
public V setValue(V value) {
this.value = value;
return this.value;
}
}
}
25 changes: 25 additions & 0 deletions src/main/java/basic/datastructure/map/Map.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package basic.datastructure.map;

public interface Map<K,V> {

void put(K key, V value);

boolean containsKey(K key);

V get(K key);

V remove(K key);

void clear();

int size();

boolean isEmpty();


interface Entry<K, V> {
K getKey();
V getValue();
V setValue(V value);
}
}