2017-10-11 5 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 (I가의 도움이 필요 무엇)

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; 
    } 
    } 

} 

Edge 인터페이스는 단지 두 개의 int 값이며 두 개의 getter가 있습니다.

하자 우리가 같이있는 목록 [EdgeImpl (1,2), EdgeImpl을 (3,4)]

난에 열거 된 것을 만들고 싶어 [EdgeImpl (2,1), EdgeImpl (가 말한다 4,3)]. 리버스 메서드가 정확히 수행 할 작업입니다. 나는 set 메소드를 추가 질수 있도록

제외

I 인터페이스도 구현을 편집 어차피 그것은 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