2011-04-28 109 views
0

我需要您在列表列表問題中的幫助。我有2個陣列表。將陣列列表映射到java中的另一個陣列列表

ArrayList<string> a = {"fruit=apple,grape,banana;nut=pistachio,chestnut,walnut,peanut;vegetable=broccoli,carrot,cabbage,tomato"} 
Arraylist<String> b = {"1:1:2 2:1:2 2:3:4 3:4:4"} 

好的,數組b是表示食品中。可以說

1:1:2 means apple:nut:carrot , 
2:1:2 means grape:pistachio:carrot, 
2:3:4 means grape:walnut:tomato and 
3:4:4 means banana:peanut:tomato. 

目前我完全不知道。希望你們可以幫助我瞭解如何做到這一點。

在此先感謝

+0

工作。 – 2013-01-09 13:36:38

回答

2

好了,你現在有哪些是可能混淆的情況幾個問題:

  1. 沒有這樣的類ArrayList<string>,我猜你的意思是List<string>
  2. 目前您的列表由單個元素,這是一個逗號/空格分隔的字符串。你可能想要更多的東西是這樣的:
List fruit = new List(new string[] {"apple", "grape", "banana" }); 
List nut = new List(new string[] {"pistachio", "chestnut", "walnut", "peanut" }); 
List vegetable = new List(new string[] {"broccoli", "carrot", "cabbage", "tomato" }); 

這給你一個列表,其中每個元素分別是堅果,水果或蔬菜。

而且你的第二個列表應該看起來可能是這樣的:

List<int[]> combinations = new List<int[]>(
    new int[][] 
    { 
     new int[] {1, 1, 2}, 
     new int[] {2, 1, 2}, 
     new int[] {2, 3, 4}, 
     new int[] {3, 4, 4}, 
    }); 

即結合是一個組合列表,其中每個組合由3個整數組成 - 列表中每個元素的索引。 (這可能有點混亂,絕不是唯一的選擇 - 詢問這一點是否不清楚)。

在臉數組在C#0指數的,其實你可能想要這個:

List<int[]> combinations = new List<int[]>(
    new int[][] 
    { 
     new int[] {0, 0, 1}, 
     new int[] {1, 0, 1}, 
     new int[] {1, 2, 3}, 
     new int[] {2, 3, 3}, 
    }); 

這至少讓你的數據更易於使用,所以剩下的唯一問題是:

  • 你是如何從上面得到的? (我會讓你自己去看看)。
  • 你想要做什麼?
+0

爲b列表是從ArrayList 。實際上它是一個很長的列表,但我只是簡短地做了一個簡單的例子。但對於我認爲我可以將其更改爲列表或雙數組。 – Roubie 2011-04-28 02:31:24

+0

@Roubie在我看來,你是在解析一些字符串(例如來自文本文件),在這種情況下,你構建列表的方式會有所不同 - 無論如何,我希望這個答案能幫助你給出一些方向。 – Justin 2011-04-28 02:46:36

1

嘗試下面的代碼,它按預期工作,讓我知道它不符合用例。

public static List<String> fruits = new ArrayList<String>(); 
public static List<String> nuts = new ArrayList<String>(); 
public static List<String> vegitables = new ArrayList<String>(); 

/** 
* @param args 
* @throws ParseException 
* @author Rais.Alam 
*/ 
public static void main(String[] args) throws ParseException 
{ 

    fruits.add("apple"); 
    fruits.add("grape"); 
    fruits.add("banana"); 

    nuts.add("pistachio"); 
    nuts.add("chestnut"); 
    nuts.add("walnut"); 
    nuts.add("peanut"); 

    vegitables.add("broccoli"); 
    vegitables.add("carrot"); 
    vegitables.add("cabbage"); 
    vegitables.add("tomato"); 

    System.out.println(getValue("1:1:2")); 
    System.out.println(getValue("2:1:2")); 
    System.out.println(getValue("2:3:4")); 
    System.out.println(getValue("3:4:4")); 

} 

public static String getValue(String key) 
{ 
    String returnString = ""; 
    String[] arr = key.split(":"); 
    returnString += fruits.get(Integer.parseInt(arr[0]) - 1) == null ? "" : fruits.get(Integer.parseInt(arr[0]) - 1) + ":"; 
    returnString += nuts.get(Integer.parseInt(arr[1]) - 1) == null ? "" : nuts.get(Integer.parseInt(arr[1]) - 1) + ":"; 
    returnString += vegitables.get(Integer.parseInt(arr[2]) - 1) == null ? "" : vegitables.get(Integer.parseInt(arr[2]) - 1); 

    return returnString; 

} 

運行程序後,你會得到下面的輸出上您接受

apple:pistachio:carrot 
grape:pistachio:carrot 
grape:walnut:tomato 
banana:peanut:tomato