2016-03-28 64 views
-4

嗨我已經給出了下面的接口,我需要使用這個接口來實現包,我有點困惑,因爲如何使用方法,任何幫助/提示將不勝感激。我需要將物品添加到包中,並且應該能夠接受重複的物品。然後我刪除一個項目並找到一個項目。java界面方法的用法

public interface Things<T> extends Iterable<T> { 
    public int size(); 
    public boolean add(T x); 
    public T remove(T x); 
    public T find(T x); 
    public void clear(); 
} 
//Implementing thing using bag 
public class Bag<T> implements Things<T> { 

    @Override 
    public int size() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public String add(T x) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public String remove(T x) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public String find(T x) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

} 


public class ThingsDemo { 


    public static void main(String args[]) 

    { 
     How to I use add(), remove(), and find method here? 


    } 

} 
+2

如果您感到困惑並且不知道從哪裏開始,那麼StackOverflow就不是您要問的地方。你應該和你的教授或他/她的助教談話。 StackOverflow不是教程網站,也不提供基本的培訓或代碼編寫服務。 –

+0

使用您在課程之前的工作中學到的東西。一旦你有一些你認爲很接近的代碼,在這裏發佈,你可能會得到更多的幫助。 – BPS

+0

@ user6027133 - Stackoverflow不打算爲你做功課。粗魯不會改變這一點。如果您的教師和學校允許,您可以向您提出有關您的實施的具體問題。請參閱[「我如何問及回答作業問題」](http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework-questions)。 –

回答

0

事情是這樣的:

public interface Things<T> extends Iterable<T> { 
    public int size(); 
    public boolean add(T x); 
    public T remove(T x); 
    public T find(T x); 
    public void clear(); 
} 
//Implementing thing using bag 
public class Bag<T> implements Things<T> { 
    private ArrayList<T> list = new ArrayList<T>(); 

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

    @Override 
    public boolean add(T x) { 
     list.add(x); 
    } 

    @Override 
    //It's weird why the remove method returns T 
    //Sine you already pass x of type T as parameter 
    public T remove(T x) { 
     list.remove(x); 
     return x; 
    } 

    @Override 
    public T find(T x) { 
     //Since you already know x, what is find() searching for? 
     return null; 
    } 

} 


public class ThingsDemo { 


    public static void main(String args[]) 

    { 
     Bag<String> bag = new Bag<>(); 
     bag.add("cat"); 
     bag.remove("cat"); 
    } 
} 
+0

更好的解決方案。使用接口而不是類。接口驅動的開發。 –

-1

在這裏你去。你不應該在你的包類中使用String返回類型。它應該類似於你在界面中聲明的內容。請參閱樣本的添加方法並類似地執行刪除和其他方法。

public interface Things<T> extends Iterable<T> { 
    public int size(); 
    public boolean add(T x); 
    public T remove(T x); 
    public T find(T x); 
    public void clear(); 
} 

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

public class Bag<T> implements Things<T> { 

List<T> data = new ArrayList<T>(); 

@Override 
public int size() { 
    data.size(); 
} 

@Override 
public boolean add(T x) { 
    data.add(x); 
    return false; 
} 

@Override 
public T remove(T x) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public T find(T x) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void clear() { 

} 

@Override 
public Iterator<T> iterator() { 
    return null; 
} 
} 

public class ThingsDemo { 


public static void main(String args[]) 

{ 
    Things<String> things = new Bag<>(); 

    things.add("something"); 
    System.out.println(things.size()); 
    things.remove("something"); 
    System.out.println(things.size()); 

    } 

} 
+0

感謝您的提示 – user6027133