[英]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()
,但您可能希望將數字添加到字符串中。
一種方法是:
成功!
此解決方案無濟於事。
我建議從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.