簡體   English   中英

從數組列表中提取信息

[英]Extracting information from an arraylist

我聲明了一個ArrayList a = [1,2,3] 我使用以下循環創建了另一個ArrayLList b

for(int i = 0; i<a.size(); i++)
{
      for(int j=i+1; j<a.size();j++)
      {
              b.add("{" + a.get(i)+ "," + a.get(j) + "}");
      }
}

現在, ArrayList b將包含元素[{1,2},{1,3},{2,3}] 現在,如果我使用System.out.println(b.get(0))打印該語句,則輸出將為{1,2}

現在,我想進一步探索數組,以便可以分別提取12 我該如何實現?

創建課程對

class Pair{
String a 
String b
....
///setters and getters
} 

現在讓b為List<Pair>所以調用b.add("{" + a.get(i)+ "," + a.get(j) + "}"); 您可以執行簡單的b.add(new Pair(a.get(i),a.get(j));然后您不需要使用分割字符串之類的東西,您可以通過以下操作輕松訪問值即b.get(0).getA()b.get(0).get()

您還可以重寫方法以成對字符串

public String toString() {

    return "{" + a+ "," + b + "}";
}

因此,當您執行System.out.println(a.get(0))您將獲得與之前完全相同的輸出

***編輯,如果您想在評論中說有兩個以上的元素組,則可以構造您的類有點不同

class MyClass{ 
List<Integer> fields = new ArrayList<Integer>();
//two constructors
MyClass(int singleVal)
{
fields.add(singleVal);
}


MyClass(MyClass a, MyClass b)
{
fields.addAll(a.fields);
fields.addAll(b.fields);
}
//getters setters depends what you need


}

您的兩個列表都將是MyClass的列表,當您填充列表a時,您將使用第一個構造函數創建對象,當您要將元素添加到b列表中時,可以執行b.add(new MyClass(a.(i),a.(j)))但您也可以執行b.add(new MyClass(a.(i),b.(j)))b.add(new MyClass(b.(i),b.(j)))

我知道您的數組b僅包含字符串。 使用任何String標記化機制來實現這一目標-String.splitStringTokenizer

提示:StringTokenizer性能更好

您應該從邏輯上分解演示文稿。

在循環中,您將創建一對元素。 因此,創建某種類型來表示它。

class Pair {

 private int left;
 private int right

 Pair(int left, int right) {
   this.left  = left;
   this.right = right;
 }

 public int getLeft() {
   return this.left;
 } 

 public int getRight() {
   return this.right;
 }

 @Override
 public void toString() {

     return String.format("{%d , %d}",getLeft(),getRight());
 }
}

列表列表= new ArrayList();

for(int i = 0; i<a.size(); i++)
{
      for(int j=i+1; j<a.size();j++)
      {
              list.add(new Pair(i,j));
      }
}

然后訪問(提取)項目

int l = list.get(0).getLeft();
int r = list.get(0).getRith();

如果要在控制台上顯示結果。

for(Pair p : list) {
  System.out.println(p);
}

關於輸出格式


編輯

如評論中提到的OP。 他希望具有允許他存儲數據的靈活數據結構。

List<List<Integer> parent = new ArrayList<List<Integer>()

for(int i = 0; i<a.size(); i++)
{

 List<Integer> child = new ArrayList<Integer>();

      for(int j=i+1; j<a.size();j++)
      {
              child.add(a.get(i));
              child.add(a.get(j));
      }

  parent.add(child);
}
String ele = b.get(0);
ele = ele.replace("{", "");
ele = ele.replace("}", "");
StringTokenizer tokens = new StringTokenizer(ele, ",");
while(tokens.hasMoreTokens()) {

    int val = Integer.parseInt(tokens.nextToken());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM