java - 从方法中获取返回值以在for循环中使用
问题描述
这是基本的,但我找不到答案...我在我的 Main 类中使用 3 个参数调用方法 Kmeans(centers, dataset, k)。该方法返回中心。如何在另一个类中使用中心的返回循环?
从主类调用方法...
concurrentKmeans(centers, dataset, k);
方法...
public static List<TockaXY> kmeans(List<TockaXY> centers, List<TockaXY> dataset, int k) {
boolean converged;
do {
List<TockaXY> noviCentri = noviCentri(dataset, centers);
double dist = dobiRazdaljoCenters(centers, noviCentri);
centers = noviCentri;
converged = dist == 0;
} while (!converged);
return centers;
}
尝试在 for 循环中使用它来迭代List<TockaXY>
...
public class WebviewLoadListner implements ChangeListener<State>{
@Override
public void changed(ObservableValue<? extends State> observable, State from, State to) {
if (to == State.SUCCEEDED)
{
SampleController.engine.executeScript("jumpTo("+46.641389+","+49.756667+","+10+")");
for(int i =0; i<Main.kmeans(centers, dataset, k); i++){
}
}
}
}
解决方案
更好的方法是调用该方法并将其设置为局部变量,然后在 for 循环中使用它。在 for 循环条件中使用函数调用并不理想,因为每次对其进行评估时,每次循环迭代都会调用相同的函数,这会影响性能。
SampleController.engine.executeScript("jumpTo("+46.641389+","+49.756667+","+10+")");
List<TockaXY> list = Main.kmeans(centers, dataset, k);
for(int i =0; i< list.size(); i++){
//Use list.get(i) for each individual element in the list
}
或者
List<TockaXY> list = Main.kmeans(centers, dataset, k);
for(TockaXY toc : list) {
//toc will give individual element in the list
}
使用 JDK 8,我们可以使用流来访问元素
List<TockaXY> list = Main.kmeans(centers, dataset, k);
list.stream().forEach(toc -> {
//Your operation with toc
});
推荐阅读
- c - 需要帮助 我的图书馆项目有成员问题
- mysql - 如何在 SQL Percentile Window 函数上添加条件?
- java - 单击箭头时未调用 JComboBox setPopupVisible
- unity3d - 统一编辑器中此可选滚动的名称?
- pdf - 使用 RC4 加密的 PDF 忽略权限
- mongodb - 将选项 { useNewUrlParser: true } 传递给 MongoClient.connect
- clips - 如果找到了事实,那么 CLIPS 的 do-for-fact 的返回值是多少?
- php - 在 /wp-admin 上禁用 WPML 翻译(序列化和反序列化会增加页面加载时间)
- angular - 由于某些具有私有属性的组件,Angular 库无法编译
- excel - 如果第一组的最后一个数字是 x 则