![](/img/trans.png)
[英]Comparing two arrays using dictionary order in an array of arrays (java)
[英]dictionary using array java
我的目標是使用數組實現字典,但我遇到了一些問題。我認為放置和獲取的方法不足以發揮作用,但我不知道要修改什么。這是Dictionary類:
public class Dictionary implements IDictionary{
public class ObjectDictionary{
//public boolean isFull=false;
public Object key;
public Object value;
}
private ObjectDictionary[] elems;
private int nrElem;
public Dictionary(){
nrElem=0;
elems=new ObjectDictionary[20];
}
public void resize(){
ObjectDictionary[] ob = new ObjectDictionary[2*elems.length];
for(int i=0;i<elems.length;i++)
ob[i]=elems[i];
elems=ob;
}
public int size(){
return nrElem;
}
public boolean isEmpty(){
return nrElem==0;
}
public void put(Object k,Object v){
for (int i=0; i<elems.length;i++){
if (elems.length == nrElem){
resize();
elems[i].key=k;
elems[i].value=v;
//elems[i].isFull=true;
}
}
}
public Object get(Object k){
for(int i=0; i<elems.length;i++)
if(elems[i].key.equals(k)){
return elems[i].value;
}
return null;
}
}
這是主要方法:
public class Start {
public static void main(String[] args){
IDictionary d = new Dictionary();
d.put("a",1);
d.put("b", 2);
for(int i=0;i<d.size();i++){
System.out.println(d.get("a"));
}
}
}
當我編譯時,它只表示已終止,我不知道如何解決它。 非常感謝你。
put
新元素時尚未增加nrElem
。 因此size
為零。
我假設put method將在數組的末尾添加一個元素。
在您的put方法中,您使用了一個循環來檢查elems.length == nrElem,因為nrElem以0開頭,elems.length為20,該條件將永遠無法滿足,因此不會將任何鍵值對添加到數組。 換句話說,if塊中的語句將永遠不會執行。
if (elems.length == nrElem){
resize();
elems[i].key=k;
elems[i].value=v;
//elems[i].isFull=true;
}
如果要實現這一點,我將首先檢查數組中是否有足夠的空間來容納另一個元素。 如果不是,請執行resize()。 然后只需將元素添加到數組的末尾即可。 同樣不要忘記更新nrElem。
public void put(Object k, Object v) {
if (nrElem == elems.length) {
resize();
}
elems[nrElem] = new ObjectDictionary();
elems[nrElem].key = k;
elems[nrElem].value = v;
++nrElem;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.