从一个链表数组中提取一个链表



我正试图从linkedlist数组中提取一个linkedlist,我卡住了。提取这个linkedlist之后,我需要对每个linkedlist中每个篮子中的水果数量求和。例如,篮子0返回174,篮子1返回147,等等。

我已经尝试使用迭代器和listtiterator(以及)来提取水果的数量,但我没有得到任何地方。有人能帮忙吗?一些指针/提示,所以我可以重新开始编码。

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()方法获得列表中的项数,但您可能想要添加您放入字符串中的数字。

一种方法是:

  • 定义一个带有三个属性的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>并从那里开始

不应该使用字符串来存储多个信息。这将迫使您每次要获取部分信息时都解析字符串。我不知道"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();
}

您需要遍历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
  }
}

相关内容

  • 没有找到相关文章

最新更新