2017-10-11 17 views
-3

Edge.java(インターフェース)しか入手方法

public interface Edge { 

    /** 
    * get the first node of the Edge. 
    * @return the first Node. 
    */ 
    public int getFirstNode(); 

    /** 
    * get the second node of the Edge. 
    * @return the second Node. 
    */ 
    public int getSecondNode(); 

} 

EdgeImpl.java(実装)

public class EdgeImpl implements Edge { 

    private int node1; 
    private int node2; 


    public EdgeImpl(int node1, int node2) { 
    this.node1 = node1; 
    this.node2 = node2; 
    } 

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

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

} 

first.java(私は助けを必要とどのような)

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

public class first { 

    public static void main(String[] args) { 

    List<Edge> graph = new ArrayList<>(); 
    Edge a = new EdgeImpl(1, 2); 
    Edge b = new EdgeImpl(3, 4); 
    graph.add(a); 
    graph.add(b); 


    } 
    public static void reverse(List<Edge> graph) { 
    int count = 0; 
    while(count < graph.size()) { 
     int temp1 = graph.get(count).getFirstNode(); 
     int temp2 = graph.get(count).getSecondNode(); 
     graph.get(count).getFirstNode() = temp2; 
     graph.get(count).getSecondNode() = temp1; 
     count = count + 1; 
    } 
    } 

} 
を使用して逆転しました

エッジインターフェイスはちょうど2つのint値で、2つのゲッターがあります。

みましょう私たちはこのようなものですリスト持っていると言う[EdgeImpl(1,2)、EdgeImpl(3,4)]

私は[EdgeImpl(2,1)に記載されていることを確認したい、EdgeImpl( 4,3)]。逆の方法で何をするのでしょうか。

EXCEPT

私はsetメソッドを追加カントので、私は、インターフェイスも実装を編集カント、それはIN-に配置する必要があります。

getメソッドを使用してスワップできないため、試行が失敗します。私は両者をどうやって交換するのか非常に混乱しています

何か助けてください?

+0

設定メソッドがなく、実装を変更することもできません。私は残っている方法が反映されていると思います。 –

+0

あなたの割り当てが 'List'を逆にする場合、' Edge'はどのように関連していますか?少なくともそれはあなたがそれを説明した方法です。私は先生に説明を求めることを勧めます。 – Kayaman

答えて

0

既存のEdgeImplを変更できない場合は、新しいものを作成してください。

「インプレース」の意味は、新しいリストを返すことができず、渡されたリストを変更する必要があるということだと思います。新しいEdgeImplを作成することが許可されています。もしそうでなければ、それは反射を伴うでしょう、それはあまり自明ではありません。

public static void reverse(List<Edge> graph) { 
    for (int i = 0 ; i < graph.size() ; i++) { 
     int temp1 = graph.get(i).getFirstNode(); 
     int temp2 = graph.get(i).getSecondNode(); 
     EdgeImpl newEdge = new EdgeImpl(temp2, temp1); 
     graph.set(i, newEdge); // this overwrites the element in the list at position i. 
    } 
} 
+0

これはインプレイスとしてカウントされますか? –

+0

@ABC第2パラグラフを参照してください。 – Sweeper

関連する問題