在另一个线程中,我发现了这个比较器(帖子的底部),用于对JTable列进行排序,这些列可能由整数,字符串或两者组成。我不知道如何将其应用于我的JTable。我的表以前使用过自动创建的行排序器。我将其设置为false,现在使用:
TableRowSorter<MyTableModel> rowSorter = new TableRowSorter<MyTableModel>();
jtable.setRowSorter(rowSorter);
rowSorter.setComparator(0, c1);
我得到了超出范围的异常索引,说我提供的范围无效。我的表有多个列。这是应用比较器的正确方法吗?我觉得这不是做到这一点的方法。
Comparator c1 = new java.util.Comparator() {
/**
* Custom compare to sort numbers as numbers.
* Strings as strings, with numbers ordered before strings.
*
* @param o1
* @param o2
* @return
*/
@Override
public int compare(Object oo1, Object oo2) {
boolean isFirstNumeric, isSecondNumeric;
String o1 = oo1.toString(), o2 = oo2.toString();
isFirstNumeric = o1.matches("\\d+");
isSecondNumeric = o2.matches("\\d+");
if (isFirstNumeric) {
if (isSecondNumeric) {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
} else {
return -1; // numbers always smaller than letters
}
} else {
if (isSecondNumeric) {
return 1; // numbers always smaller than letters
} else {
isFirstNumeric = o1.split("[^0-9]")[0].matches("\\d+");
isSecondNumeric = o2.split("[^0-9]")[0].matches("\\d+");
if (isFirstNumeric) {
if (isSecondNumeric) {
int intCompare = Integer.valueOf(o1.split("[^0-9]")[0]).compareTo(Integer.valueOf(o2.split("[^0-9]")[0]));
if (intCompare == 0) {
return o1.compareToIgnoreCase(o2);
}
return intCompare;
} else {
return -1; // numbers always smaller than letters
}
} else {
if (isSecondNumeric) {
return 1; // numbers always smaller than letters
} else {
return o1.compareToIgnoreCase(o2);
}
}
}
}
}
};
手动设置RowSorter时,您必须注意使其与模型保持同步:
TableRowSorter sorter = new TableRowSorter();
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(myComparator);
嗨,我是贾维斯的新手。 我有一个实体,我正在为它实现一个自定义比较器,以便使用Javers进行比较。 我的实体:- 包装com.devyansh.entity; 进口java.util.清单; 导入组织。贾维斯。果心元模型。注释。实体 下面我注册了新的比较器:- 我的比较器实现:- 问题领域:- 每当我尝试使用以下行进行比较时:- Diff Diff=标枪。比较(new Ent(“aaa”,new
假设我有一个字符串流: 工作正常: 比较器是一种功能接口。这意味着我们可以使用方法引用或lambdas来实现它。Comparator接口实现一个方法,该方法接受两个字符串参数并返回一个int。但是,Comparator::ReverseOrder不这样做。它是对接受零参数并返回比较器的函数的引用。这与接口不兼容。这意味着我们必须使用方法,而不是方法引用。 但我不明白。
我对泛型类型有点无知,希望得到一些澄清。在我Java的教科书中,为我们提供了一个mergesort程序: 我正在尝试实现上述算法。经过一些研究,我决定实例化一个默认比较器,并将其传递给mergeSort()函数。然而,我在尝试传入数组时遇到了问题。Eclipse IDE中的错误是mergeSort(K[],Comparator)方法 下面是我的main方法和DefaultComparator方法的
我在我的项目中使用jsPlumb库,我有一个函数,如果endpoint图像连接,则会更改它们。当页面加载并且一切正常时,我调用它,但是当我在连接事件中调用它时,什么都不会发生。这是我的代码: 如果断开连接,我还尝试将endpoint图像更改回第一个外观,但在这种情况下,只有源endpoint更改,目标保持不变: 我错过了什么,或者我如何解决这个问题? 编辑:这里是JSFIDLE: https://
问题内容: 我有以下代码,并收到上述错误。由于我是python的新手,因此无法理解这里的语法以及如何解决错误: 问题答案: 有一种从日期时间转换为日期的方法。 要进行相反的转换,可以使用此功能
问题内容: 因此,我在这里看到了一个示例,该示例如何使用Comparator接口对ArrayList进行排序,因此我进行了尝试。使用Strings可以很好地工作,但是我要排序的一个变量是Integer,它将无法编译,并说“不能取消引用int”。 我该怎么做才能使它起作用,并允许我按score变量对ArrayList进行排序? 这是我的代码: 谢谢您的帮助! 问题答案: 您不能在上调用方法;没有可以