簡體   English   中英

從鏈表列表中提取鏈表

[英]Extracting a linkedlist from an array of linkedlist

我正在嘗試從一組鏈表中提取一個鏈表並卡住。 提取此鏈表后,我需要對每個鏈表中每個籃子中的水果總數進行求和。 例如,購物籃0返回174,購物籃1返回147,依此類推。

我試過使用迭代器和listIterator(以及)來提取水果的數量,但我什么也沒得到。 誰能幫忙? 一些指針/提示,所以我可以再次開始編碼。

public class ArrayLinkedList {

    final static int NUM_OF_ROWS = 32767;

    public static void main(String [] args) {

        List[] basket = new List [NUM_OF_ROWS];

        for (int i = 0; i < NUM_OF_ROWS; i++) {
            basket[i] = new LinkedList();
        }

        basket[0].add("1,APPLE,12");
        basket[1].add("2,APPLE,14");
        basket[1].add("3,APPLE,9");
        basket[2].add("4,APPLE,90");
        basket[2].add("5,APPLE,13");

        basket[0].add("1,ORANGE,45");
        basket[0].add("2,ORANGE,19");
        basket[1].add("3,ORANGE,67");
        basket[1].add("4,ORANGE,33");

        basket[0].add("1,BANANA,2");
        basket[0].add("2,BANANA,96");
        basket[1].add("3,BANANA,16");
        basket[1].add("4,BANANA,8");
        basket[2].add("5,BANANA,14");
        basket[2].add("6,BANANA,26");
        basket[3].add("7,BANANA,8");
        basket[3].add("8,BANANA,5");

        for (int i = 0; i < 5; i++) {
           System.out.println("Basket " + i + ": " + rows[i].toString());
        }

    }

}

我認為這是家庭作業。

到目前為止,您正在做的是創建一個列表數組,將字符串添加到列表中。

您可以通過.size()方法獲取列表中的項目.size() ,但您可能希望將數字添加到字符串中。

一種方法是:

  • 用三個屬性定義一個Fruit類
  • 實例化水果對象以添加到購物籃(列表)
  • 使用for循環尋址每個購物籃
  • 在每個購物籃列表上使用迭代器來計算水果

成功!

此解決方案無濟於事。

我建議從Basket類和Fruit枚舉開始(不保證可以編譯-您可以解決):

public enum Fruit { APPLE, BANANA, ORANGE; }

public class Basket
{
    private Fruit fruit;
    private int quantity;
    // you add the rest, including equals and hashCode overrides
}

創建一個List<Fruit>並從那里開始。

您需要遍歷basket數組,然后為每個條目遍歷List ,獲得每個籃子條目(例如,籃子條目為1,APPLE,12。將每個籃子條目的水果總數加起來就可以得到總數。

另外,您可能希望使用String將列表設為非通用。

//Iterate through the basket array
for (List<String> list : basket) {
  int totalNumberOfFruit = 0;

  //Iterate through the basket entries
  for (String s : list) {
    //s here will have the value for eg "1,APPLE,12"
    //you need to extract the number of fruit, perhaps
    //with s.split(",") and then add the number to
    //totalNumberOfFruit

  }
}

您不應使用字符串來存儲多個信息。 這將迫使您每次想獲取一部分信息時都要解析該字符串。 我不知道"1,APPLE,12"代表什么,但是您應該使用一個對象代替此字符串:

public class Item {
    private int something;
    private String fruitName;
    private int numberOfFruits;

    public Item(int something, String fruitName, int numberOfFruits) {
        this.something = something;
        this.fruitName = fruitName;
        this.numberOfFruits = numberOfFruits;
    }

    public int getSomething() {
        return this.something;
    }

    public String getFruitName() {
        return this.fruitName;
    }

    public int getNumberOfFruits() {
        return this.numberOfFruits;
    }
}

然后,可以像這樣構建您的籃子籃:

List<Item>[] basket = new List<Basket>[NUM_OF_ROWS];

for (int i = 0; i < NUM_OF_ROWS; i++) {
    basket[i] = new LinkedList<Item>();
}

basket[0].add(new Item(1, "APPLE", 12));
basket[1].add(new Item(2, "APPLE", 14));
// ...

然后,您可以遍歷一個籃子並輕松計算出水果總數:

int totalNumber = 0;
for (Item item : basket[0]) {
    totalNumber += item.getNumberOfFruits();
}

暫無
暫無

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

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