我正试图从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
}
}