所以我遇到了一个Guava TreeBasedTable的问题(如果你不熟悉,它是一棵基于一对键访问其元素的树),这在过去的一周里一直是一个难以理解的问题.我会尽力解释,删除多余的代码:
TreeBasedTable<RowValue, Data, Result> results = TreeBasedTable.create();
for (Data d : data.getData()) {
for (Operation o: data.getOperations()) {
Result r = o.calculate(...);
results.put(r.rowValue, d, r);
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我迭代一些我拥有的数据,做一些计算,并将结果粘在表中.但奇怪的是,当我尝试访问元素时.如果我只是按如下方式迭代它们:
for(Result r : results.values()){
System.out.println(r);
}
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,如果我尝试按如下方式访问它们:
for(RowValue row : results.rowKeySet()){
for(Data d : results.columnKeySet()){
System.out.println(results.get(row, d));
}
}
Run Code Online (Sandbox Code Playgroud)
第一个元素以某种方式为null.但是,如果树的大小为1,则可以正常工作.可能是树木有什么东西在这里,我不理解?很抱歉这个问题很长,我希望很清楚.
:: EDIT ::传递给树的第一个值始终为非null.但是当树到达大小3时,它将从非null变为null.对不起,如果不清楚我的问题是什么.根据要求,这是实际密码的实际代码:
public void createResults(Options options,MeasuredData data,ArrayList methods){
private TreeBasedTable<MethodDescriptor, Compound, Result> results = TreeBasedTable.create();
for (Compound c : data.getCompounds()) {
for (Method method : methods) {
ArrayList<Result> calcResults = …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的XML.
<?xml version="1.0" encoding="UTF-8"?>
<header>
<row>
<item1>stuff</item1>
<item2>stuff</item2>
</row>
<row>
<item1>stuff</item1>
<item2>stuff</item2>
</row>
...
</header>
Run Code Online (Sandbox Code Playgroud)
我想读这个
def doc = new XmlSlurper().parseText(message)
Run Code Online (Sandbox Code Playgroud)
然后输出每个"row"元素作为单独的消息.例如:
<header>
<row1>
<item1>stuff</item1>
<item2>stuff</item2>
</row1>
</header>
Run Code Online (Sandbox Code Playgroud)
在Groovy中执行此操作的正确方法是什么?我应该使用XSLT还是过于复杂的东西?
我看到很多有关匹配括号的文章,但是对括号的热爱不多。在Eclipse中,如何使匹配的括号突出显示?我正在使用Java和Groovy。
我有一个很大的Ifs列表,我想把它改成一个switch语句.目前它看起来像这样:
if(x == 1){
...
}
if(x == 2){
...
}
if(myArray.contains(x)){
...
}
Run Code Online (Sandbox Code Playgroud)
实际上它比这长一点,但是如果在示例中让我感到困惑的是第三个 - 如何改变它以使其在交换机中工作,或者甚至可能?
我在我的KornShell(ksh)脚本中有一个循环,我想要至少执行一次,我想要一种优雅的方式来做,但是当我发现很多关于如何编写while循环的东西时,似乎没有做任何事情......在那里循环.
我正在做的是从配置文件中读取逗号分隔的文件列表并处理它们.如果文件列表为空,那么我想处理目录中的所有文件.
有什么好办法呢?
编辑:这是我目前的情况.我抓取文件名,然后从字符串中删除它以进行下一次传递.如果Files列表为空,我退出循环.但是,如果列表开头为空,我希望它仍然运行一次.
while [[ -n "${FILES%%,*}" ]]; do
FILE="${FILES%%,*}"
FILES="${FILES#*,}"
done
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用AntBuilder在Groovy中压缩文件和目录。我有以下代码:
def ant = new AntBuilder()
ant.zip(basedir: "./Testing", destfile:"${file}.zip",includes:file.name)
Run Code Online (Sandbox Code Playgroud)
这将压缩文件“ blah.txt”,而不压缩文件“ New Text Document.txt”。我认为问题是空间。我尝试了以下方法:
ant.zip(basedir: "./Testing", destfile:"${file}.zip",includes:"${file.name}")
ant.zip(basedir: "./Testing", destfile:"${file}.zip",includes:"\"${file.name}\"")
Run Code Online (Sandbox Code Playgroud)
以上均未解决问题。我正在使用Ant,因为它将压缩目录,并且我在工作中无法访问org.apache.commons.io.compression。
我有一个HashMap。我想在ListView中显示键。
麻烦的是,ListView.setItems()想要一个ObservableList,而我所拥有的只是一个keySet()。
如何获得ListView来观察Map中的键,而又不做一些笨拙的事情,例如维护两个匹配的数据结构?
我有一个查询
select *
from tableName
where x='3'
Run Code Online (Sandbox Code Playgroud)
这给了我一些结果,但是我不想看到任何列,其中每一行都是Null。有没有一种简单的方法可以将其过滤掉?
我有一个文件,我需要计算它的 SHA512 值。我发现很多网站都提供为我做这件事,但我想用 Java 以编程方式来做(好吧,Groovy,但它是一样的)。
对于那些好奇的人,我正在运行 Oracle 的 TZUpdater 工具并将其指向本地文件。这需要一个包含该文件的 SHA512 值的文件。 http://www.oracle.com/technetwork/java/javase/tzupdater-readme-136440.html
我有这样的黄瓜stepdef
Given the date of <date>
When blah blah
Then x y and z
Examples:
|2015-01-01|
|2045-01-01|
Run Code Online (Sandbox Code Playgroud)
当我从中生成stepdefs时,我得到@Given("^the date of (\\d+)-(\\d+)-(\\d+)$")
And该方法是使用三个整数作为参数生成的。如何告诉Cucumber将其视为Java.Time LocalDate?有没有办法创建一个Cucumber会理解的映射器?或者至少,有一种方法可以将该日期对象视为字符串而不是三个数字?