簡體   English   中英

從單個方法中創建和使用ArrayList?

[英]Create and use an ArrayList from within a single method?

是否可以在方法內創建和使用ArrayList 我想在public int min()方法中創建一個臨時堆棧以跟蹤最小值。 但是,編譯器抱怨ArrayList add()方法: Cannot resolve method 'add(int)'我想這是因為我試圖在創建ArrayList的同一方法中運行它?

import java.util.*;

public class MinStack {
private ArrayList<Integer> data;


public MinStack() {
    data = new ArrayList<Integer>();
}

public void push( int a ) {
    data.add( a );
}

public int pop() {
    if ( data.size() <= 0 ) {
        throw new IllegalStateException();
    }
    return data.remove( data.size() - 1 );
}

public int size() {
    return data.size();
}

public int min() {
    MinStack smalls = new MinStack();
    int elMin = (data.get((data.size() - 1)));
    smalls.add(elMin);
    while (!data.isEmpty()) {
        if (data.get(data.size() - 1) < elMin)
        elMin = data.get(data.size() - 1);
    }
    return elMin;
}

您不是在Arraylist實例上調用add方法,而是在沒有add方法的MinStack類對象實例上調用它。

您應該改為調用push方法,因為它是在您的類中定義的,它將調用arraylist的add方法。 否則在MinStack類中使用名稱add定義/重命名(推送) method

您使用了不合適的設計策略來實現此類。 它們在您的實現中有很多流程,在這里我不再談論這些。 在您的設計方法內,不要在類中調用push()來調用實現的行為。 您正在嘗試調用該類中未實現的方法add() 如果要在類中使用冒犯的行為,只需將您的方法調用為smalls.push(elMin)smalls.add(elMin)

smalls.add(elMin)

正在尋找MinStack類的add方法。 您應該調用push方法將elMin插入數據arrayList中。

我想你可以像下面這樣:

public int min() {

    if(data.isEmpty())
        throw new RuntimeException("the list is empty...");
    int elMin = data.get(0);
    for(int i : data) {
        if(i < elMin) {
            elMin = i;
        }
    }
    return elMin;
}

嘗試這個 :

調用push方法將elMin插入ArrayList data

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM