我有一个数据集,其中包含我想要输出到 GUI 的值。过去我会使用
List<someObject>
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想维持这样的结构,但如果有其他解决方案可用,我也不会硬性要求它。
数据集行的列是
x:y:z:t
Run Code Online (Sandbox Code Playgroud)
我尝试使用 Dataset subDf 的输出模式创建一个类,然后创建一个列表
List<SinglePoint>aList=subDf.as(Encoders.bean(SinglePoint.class)).collectAsList();
Run Code Online (Sandbox Code Playgroud)
但这会因难以解释的错误而崩溃
线程“main”中的异常 java.lang.RuntimeException:解码时出错:java.util.concurrent.ExecutionException:java.lang.Exception:编译失败:org.codehaus.commons.compiler.CompileException:文件“generate.java” ,第 27 行,第 60 列:没有找到零实际参数的适用构造函数/方法;候选者是:“database.util.SinglePoint(int, int, int, int)” /* 001 / public java.lang.Objectgenerate(Object[]references) { / 002*/ return new SpecificSafeProjection(references);
我也尝试过
List<String>listTwo=subDf.map(row->row.mkString(),Encoders.STRING()).collectAsList()
Run Code Online (Sandbox Code Playgroud)
但这不具备放入 GUI 中所需的结构。
如何将数据集转换为可交互的列表?
我有一个ArrayList和一个TreeSet拥有相同的对象类型。
TreeSet<StatusChangeDB> listToChange;
List<StatusChangeDB> originalList;
Run Code Online (Sandbox Code Playgroud)
StatusChangeDB 看起来像...
public class StatusChangeDB implements Comparable<StatusChangeDB> {
private String sector;
private String superlayer;
private String loclayer;
private String locwire;
private String problem_type;
public StatusChangeDB() {
}
...
...
getters and setters
hashCode()
equals(Object)
compareTo(...)
}
Run Code Online (Sandbox Code Playgroud)
生成原始列表时,对象StatusChangeDB具有其原语的5组中的4组,即扇区,超层,loclayer,locwire。原始列表显示在实现AbstractTableModel的JTable中。
在过程中的某个时刻,用户从显示的表中选择行,并分配“ problemType”,这将创建TreeSet listToChange。
现在,一旦“ problemType”被“设置”,我想从JTable中删除选择的值。为此,我不能使用直线
originaList.removeAll(listToChange)
Run Code Online (Sandbox Code Playgroud)
因为对象因“ problemType”而不同。
我已经在TableModel中尝试了此方法
public void removeRow(TreeSet<StatusChangeDB> listToChange) {
//this.wireList.removeAll(statusChangeDBs); Does not work
//because objects are different
for (StatusChangeDB row : listToChange) {
for (StatusChangeDB statusChangeDB : originalList) { …Run Code Online (Sandbox Code Playgroud)