首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从linkedlist数组中提取linkedlist

从linkedlist数组中提取linkedlist
EN

Stack Overflow用户
提问于 2011-05-06 19:18:18
回答 4查看 356关注 0票数 0

我试图从linkedlist的数组中提取一个linkedlist,但是被卡住了。在提取这个链表之后,我需要对每个链表中每个篮子中的水果数量求和。例如,篮子0返回174,篮子1返回147,依此类推。

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

代码语言:javascript
复制
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());
        }

    }

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-06 19:36:05

您不应该使用字符串来存储多个信息。这将迫使您在每次想要获取信息的一部分时解析字符串。我不知道"1,APPLE,12"代表什么,但你应该使用一个对象而不是这个字符串:

代码语言:javascript
复制
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;
    }
}

然后,可以像这样构建篮子数组:

代码语言:javascript
复制
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));
// ...

然后,您可以迭代其中一个篮子并轻松计算水果的总数:

代码语言:javascript
复制
int totalNumber = 0;
for (Item item : basket[0]) {
    totalNumber += item.getNumberOfFruits();
}
票数 1
EN

Stack Overflow用户

发布于 2011-05-06 19:35:43

我假设这是家庭作业。

到目前为止,您要做的是创建一个列表数组,将字符串添加到列表中。

您可以通过.size()方法获取列表中的项数,但您可能希望将输入到字符串中的数字相加。

一种方法是:

for

  • 使用三个attributes

  • instantiating水果对象定义水果类以添加到篮子(列表)

  • 使用for循环来寻址每个篮子

  • 在每个篮子列表上使用迭代器来计算水果

成功!

票数 3
EN

Stack Overflow用户

发布于 2011-05-06 19:31:39

这个解决方案是行不通的。

我建议从一个篮子类和一个水果枚举开始(不能保证它会被编译--你可以自己解决):

代码语言:javascript
复制
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>并从那里开始。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5910634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档