我正在尝试使用具有以下结构的Java中的gson解析一些JSON数据,但通过在线查看示例,我找不到任何可以完成这项工作的东西.
有人能帮忙吗?
{
"data":{
"id":[
{
"stuff":{
},
"values":[
[
123,
456
],
[
123,
456
],
[
123,
456
],
],
"otherStuff":"blah"
}
]
}
}
Run Code Online (Sandbox Code Playgroud) 我在课堂上有一个方法AppleProcessor,我想测试一下:
public void process(Fruit fruit) {
if(fruit.getType() == Fruit.APPLE) {
fruitBasket.add(((AppleFruit) fruit).getApple());
}
else {
// do something else
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,Fruit是getType()AppleFruit实现的方法的接口,并且还有一个getApple()方法.
我的测试看起来像:
@Mock
FruitBasket fruitBasket;
@Mock
Fruit fruit;
@Mock
AppleFruit apple;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testAnAppleIsProcessed() {
AppleProcessor appleProcessor = new AppleProcessoer();
when(fruit.getType()).thenReturn(Fruit.APPLE);
when(((AppleFruit) fruit).getApple()).thenReturn(apple);
appleProcessor.process(fruit);
verify(fruitBasket).add(isA(Apple.class));
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
java.lang.ClassCastException: package.fruit.Fruit$$EnhancerByMockitoWithCGLIB$$b8254f54 cannot be cast to package.fruit.AppleFruit
它来自测试中的这一行
when(((AppleFruit) fruit).getApple()).thenReturn(apple);
有谁知道如何解决这个问题,以便我可以测试我的代码?
我有一个模型,定义如下:
import statsmodels.formula.api as smf
model = smf.glm(formula="A ~ B + C + D", data=data, family=sm.families.Poisson()).fit()
Run Code Online (Sandbox Code Playgroud)
该模型具有如下所示的系数:
Intercept 0.319813
C[T.foo] -1.058058
C[T.bar] -0.749859
D[T.foo] 0.217136
D[T.bar] 0.404791
B 0.262614
Run Code Online (Sandbox Code Playgroud)
我可以抓住的值Intercept,并B通过做model.params.Intercept和model.params.B,但我不能让每个值C和D.
我试过model.params.C[T.foo],例如,我得到了错误.
我如何从模型中获取特定值?
我有两个变量如下:
List<Basket> bigBasket = new ArrayList<>();
Basket basket = new Basket();
我写了下面的代码在新增项目之间的关系bigBasket和basket:
for (Fruit specialFruit : bigBasket.get(0).getFruitInBasket()) {
for (Fruit fruit : basket.getFruitInBasket()) {
specialFruit.addRelationship(fruit);
}
}
Run Code Online (Sandbox Code Playgroud)
现在这一切都很好,但是IntelliJ检查了代码并提供了使用方法引用来改进它,所以我得到了以下内容:
for (Fruit specialFruit : bigBasket.get(0).getFruitInBasket()) {
basket.getFruitInBasket().forEach(specialFruit::addRelationship);
}
Run Code Online (Sandbox Code Playgroud)
所以上面的线路较少,但它的实际优势是什么?我并不完全了解Java 8功能的好处,这可能就是为什么我真的不明白发生了什么.
在我看来,假设您对Java 8功能没有太多了解,那么"改进"版本的代码在立即理解正在发生的事情与循环标准的意义上并不是非常易读.
有人可以解释"改进"代码与循环标准的好处吗?
编辑:删除了对lambdas的错误引用.代码只是使用方法引用 - 只是我的一个语言错误!
我有一个Java程序,它以对象列表的形式从数据库中获取数据,而对象只是具有一些与之相关的原始类型,例如字符串和整数。
现在,我需要将数据从Java传递到Python程序进行一些计算,然后将计算出的输出返回给Java程序。
我的Python程序具有以下导入
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
import numpy as np
import scipy.misc as sp
from scipy.optimize import minimize
from scipy.stats import poisson
Run Code Online (Sandbox Code Playgroud)
有谁对我如何实现这一目标有任何想法?我看了看Jython,但发现它与NumPy等不兼容,但是有一个称为JyNI的兼容层,但是我找不到找到有效解决方案的许多例子。
编辑:根据我的研究,似乎没有合适的库可以处理Java和Python之间的通信,但是Java程序有可能启动一个Python脚本,该脚本查找包含所需数据的JSON文件进行处理,然后输出Java可以接收的输出?
我有两个表:Teams 和 Matches
Teams 表组成如下 [Team ID, Team Name] Matches 表组成如下 [Match ID, Home Team, Away Team, Result]
主队和客队是 Teams 表中的外键,因此在 Teams 和 Matches 表之间定义了两个一对多关系。
我知道如何指定两个表之间的单一关系,但如何指定两个表之间的多个关系?过程是一样的吗?
如何在 Hibernate 中指定这些关系?