亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Java 中索引類的問題

在 Java 中索引類的問題

狐的傳說 2021-08-25 16:27:43
我碰巧在定義一個數組時遇到問題,其中索引應該是類的元素,如下所示:MWE:package thisModel;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class ThisCode {    public static void main(String[] args) {        class Arc {            private int i; //starting node            private int j; // ending node            public Arc(int i, int j) {                this.i = i;                this.j = j;            }            @Override            public String toString() {                return Integer.toString(i) + " " + Integer.toString(j);            }        }         List<Arc> arcs = new ArrayList<Arc>();            int N = 7;            int [] b = new int [N];    }}所以,在這里,如果我按如下方式定義數組:int [] y = new int [arcs.size()];然后,錯誤在以下循環中彈出:for (int i = 0; i < N; i++) {                for (int j = 0; j < N; j++) {                    //my issue lies here:                     //y[Arc(i,j)] - y[Arc(j,i)] = b[i];                }            }我認為這是因為y[arcs.size()]具有列表大小的維度,而不是它的元素。我的問題是是否有任何方法可以將ylike定義為一個Arc不arcs.size()這樣的數組:int[] y = new int [Arc(i,j)];
查看完整描述

1 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

如果你輸入y一個二維數組


int[][] y = new int[N][N];

然后您可以使用Arc的組件i和j作為索引y來檢索值:


int value = y[i][j];

您也可以將其輸入為Map(如果我按字面意思閱讀您的第一句話):


Map<Arc, Integer> y = new HashMap<>();

這允許您y通過使用特定Arc實例請求它們來獲取值:


Arc myArc = ...;

int value = y.get(myArc);

在這種情況下,您應該在類中定義正確的hashCode和equals方法Arc:


@Override

public boolean equals(Object x) {

  if (!(x instanceof Arc)) return false;

  Arc that = (Arc) x;

  return this.i == that.i && this.j == that.j;

}


@Override

public int hashCode() {

  return this.i + 31*this.j;

}

否則,HashMap如果您嘗試通過將Arc具有相同組件的新實例傳遞給它來獲取它們,則將找不到任何值。


查看完整回答
反對 回復 2021-08-25
  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號