小编Gig*_*0rt的帖子

将聚合函数添加到外部H2数据库

我正在尝试使用Java在H2数据库中创建聚合函数.该函数应从给定的Double列返回自定义中值计算.此计算包括使用max_variance int值仅使用与平均值足够接近的值.为此,我创建了这个类:

package custommedian;

public class CustomMedian implements org.h2.api.AggregateFunction{
    final int max_variance = 7;
    java.util.LinkedList<Double> values = new java.util.LinkedList<Double>();

    @Override
    public void init(java.sql.Connection cnctn) throws java.sql.SQLException {
        // I ignored this
    }

    @Override
    public int getType(int[] ints) throws java.sql.SQLException {
       return java.sql.Types.DOUBLE;
    }

    @Override
    public void add(Object o) throws java.sql.SQLException {
        values.add((Double)o);
    }

    @Override
    public Object getResult() throws java.sql.SQLException {
        double average = 0;
        java.util.Iterator<Double> i;
        java.util.LinkedList<Double> properValues = new java.util.LinkedList<Double>();

        // Get average value
        for( i = values.iterator(); …
Run Code Online (Sandbox Code Playgroud)

java database h2 aggregate-functions

7
推荐指数
1
解决办法
3040
查看次数

在JTable中对double值进行排序

我发现了很多与此相关的问题,但我没有找到解决我问题的简单方法.

我找不到一种方法来使我的JTable排序正确的Double值.

我扩展AbstractTableModel以接收一个Class数组并返回每列的正确类型:

class TableModelMod extends AbstractTableModel{

    private ArrayList data;
    private String [] headers;
    private Class [] types;

    TableModelMod(String [] heads, ArrayList datas, Class [] classes){
        headers = heads;
        data = datas;
        types = classes;
    }
    ... 
    @Override public Class getColumnClass(int c){
        if (c > types.length - 1)
            return null;
        else 
            return types[c];
    }
...
Run Code Online (Sandbox Code Playgroud)

然后在我的自定义JTable构造函数中:

TableRowSorter<TableModelMod> sorter = new TableRowSorter<TableModelMod>((TableModelMod)getModel());
Run Code Online (Sandbox Code Playgroud)

但是在添加行时我遇到了这个错误:

java.lang.IllegalArgumentException: Cannot format given Object as a Number
Run Code Online (Sandbox Code Playgroud)

它在DecimalFormat.format(Object number, StringBuffer toAppendTo, FieldPosition pos)接受大多数数字类型但是Double的方法中失败.

如果我为Double列使用另一个类,我没有错误,但仍然排序不能按预期工作.我试过不同的数字类,但似乎没有正确排序双打:

@Override …
Run Code Online (Sandbox Code Playgroud)

java double swing jtable tablerowsorter

6
推荐指数
2
解决办法
5511
查看次数