[英]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}
。
現在,我想進一步探索數組,以便可以分別提取1
和2
。 我該如何實現?
創建課程對
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.split或StringTokenizer
提示: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.