从arraylist中提取信息

时间:2013-06-14 08:03:12

标签: java apriori

我声明了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。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

创建类对

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))时,你会得到与之前完全相同的输出

*** EDIT 如果你想要一个超过2个元素的组,正如你在评论中所说的那样 你可以建立你的班级有点不同

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)))

答案 1 :(得分:0)

我知道你的数组b只包含字符串。使用任何字符串标记化机制来实现此目的 - String.splitStringTokenizer

提示:StringTokenizer执行得更好

答案 2 :(得分:0)

您应该从逻辑中分解演示文稿。

在循环中创建一对元素。所以创建一个代表它的类型。

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());
 }
}

List list = 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);
}

About output format


修改

作为评论中提到的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);
}

答案 3 :(得分:-1)

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());
}