如何在风暴中发射和收集一个arraylist?

时间:2016-03-09 17:30:59

标签: java maven arraylist apache-storm

我有一个我要发射的arrayList并在另一个bolt中接收它。 正如我在另一篇文章中所建议的那样: 第一个螺栓:

public void execute(Tuple tuple) {
ArrayList<Integer> i = (ArrayList<Integer>)tuple.getValue(0);
....
}

下一个螺栓:

<system.webServer>
	<staticContent>
      <remove fileExtension=".eot" />
      <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
      <remove fileExtension=".ttf" />
      <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
      <remove fileExtension=".svg" />
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
      <remove fileExtension=".woff" />
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
    </staticContent>
</system.webServer>

但是我得到的是一个大小为0的列表,而不是4号列表。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

不确定列表是什么类型(我假设是一个ArrayList)。如果是这样,你的第一个螺栓可能有这个:

Scanner s = new Scanner(System.in);
String c = s.nextLine();
System.out.print(c.length());

确保你也在螺栓1中声明它:

@Override
public void execute(Tuple tuple, BasicOutputCollector collector) {
    List<Integer> listI = getSomeListOfIntegers();
    collector.emit(new Values(listI));
}

然后在你的第二个螺栓中:

@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
    declarer.declare(new Fields("listI"));
}