首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的JTable错误地排序整数列?

这个问题是关于Java Swing框架中JTable组件在排序整数列时出现错误的问题。

首先,我们需要了解一下JTable组件的排序机制。JTable默认使用TableRowSorter来进行排序,它会根据模型中的数据类型来进行排序。如果模型中的数据类型是整数,那么它会将整数按照它们的数值大小进行排序。但是,当整数的位数不同时,排序可能会出现问题。例如,当排序包含1、10、2、3等整数时,JTable可能会将它们排序成1、10、2、3或10、1、2、3等不正确的顺序。

为了解决这个问题,我们可以为JTable设置一个自定义的排序器,以便正确地对整数进行排序。以下是一个简单的示例:

代码语言:java
复制
TableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model);
TableRowSorter<TableModel> sorter = new TableRowSorter<>(model);
table.setRowSorter(sorter);

// 设置整数列的排序器
sorter.setComparator(0, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return Integer.compare(o1, o2);
    }
});

在这个示例中,我们首先创建了一个TableRowSorter对象,并将其设置为JTable的行排序器。然后,我们为第一列(整数列)设置了一个自定义的排序器,该排序器使用Integer.compare方法进行整数比较。

这样,当我们对JTable进行排序时,整数列将按照正确的顺序进行排序,而不会出现错误。

总之,当JTable中的整数列出现排序错误时,可以通过设置自定义排序器来解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么数据不按顺序排序原来如此 | Java Debug 笔记

接口返回数据顺序总是不固定问题描述====在开发突发奇想。将表头信息也给查出来一并返回给前端了。但是正因为这一举动却带来嘲讽。...结果很明显我们写入顺序是a、d、b、c、e 但是显示出来顺序缺失a、b、c、d、e 。后来网上翻阅了一下资料说HashMap 是不会按照写入顺序排序。...HashMap key排序是按照keyhash值进行排序最近翻看了下HashMap源码了解了其内部元素存储原理才明白这个道理。此时才知其所以然。...感觉有点排序感觉当时为了解决问题就决定尝试一把。结果是完美的。bug解决收工回家。对应刚入行还是很有成就感。时隔多年现在又重新收拾了下自己bug。...决定一探究竟为什么LinkedHashMap 可以实现按照写入顺序排序。通过结构图我们清楚看到他是HashMap子类。所以他存储结构和HashMap基本上是一样

11910

java swing项目桌面软件还是蛮香,至少有了自己桌面软件|Java 开发实战

最近利用空闲时间自己琢磨了一下java swing 编程,其实在从事javaweb之前一直向往就是java swing 开发,不知道为什么可能当时觉得Windows上exe程序很是神奇,关于windows...今天看了看自己java swing程序,感觉写还不错,但是发现现在遇到一个瓶颈问题,就是jtable使用,由于一开始概念不理解现在jtable得重新写,之前吧数据放在jtable上了,但是真正开发...下面就Jtable使用,好好整理了一番,途中参考文章都会放在下面列出,读者可以自己参考**JTable结构梳理JTable=TableHeader+TableColumn顾名思义我们知道表格是由表头和表列组成...需要一个几行几列表格,至于每个单元格显示内容就是通过getValueAt这个方法实现,到这里我们就实现了,jtablemodel自定义显示。...JTable控件显示法相信有的朋友遇到过,表格中需要显示CheckBox、button等控件,但是我们发现我们定义控件在表格上显示成了控件对应字符串了,这又是为什么呢。

19410

GPT-4把DeepMind尴尬了:你登上Nature排序优化算法,两段话就找出来了

只通过两段提示,GPT-4就给出了和AlphaDev如出一辙排序算法优化方法。 而AlphaDev被DeepMind称作是“重现AlphaGo神来之笔”,发现了提速70%排序算法。...他让GPT-4实现这一操作步骤非常简单,一共就输入了两次提示。 首先,他和GPT-4说: 这有一段排序算法,觉得它还能进一步优化。你能不能在下面几行,用*注明哪些指令可以删除或者改进?...同样,AlphaDev则是通过交换和复制移动,跳过了一个步骤,以一种看似错误但实际上是捷径方式达成目标。...游戏: 只要能够搜索并选择出合适指令(下图A流程),正确且快速排好数据(下图B流程),就能获得奖励。...但这个游戏挑战不仅在于搜索空间大小(可组合指令数相当于宇宙中粒子数),也在于奖励函数性质,因为一条错误指令就可能会使整个算法失效。

16910

JDK 5 ~ 10 新特性倾情整理!

最近连 JDK11都在准备发布路上了,大家都明白了吗?也许现在大部分人还在用6-8,8新特性都没用熟,9刚出不久,10-11就不用说了。...为了大家对JDK有一个全面的了解,下面为大家整理了JDK5~10所有关键新特性!...GUI界面的显示 嵌入式数据库Derby Web服务元数据 Jtable排序和过滤 更简单更强大JAX-WS JDK7新特性 switch中可以使用字符串了 泛型实例化类型自动推断 自定义自动关闭类...新增一些读取环境信息工具方法 Boolean类型反转,空指针安全,参与位运算 两个char之间equals 安全加减乘除|sd 对Java集合( Collections)增强支持 数值可加下划线...多学习这些新特性,对写代码效率、逼格、技能成长、就业还是会很有帮助。 ?

57610

Java一分钟之-Swing组件:JTable, JTree, JTextArea

Java Swing 提供了丰富组件库,其中JTable、JTree和JTextArea用于展示数据和用户输入。本文将深入浅出介绍这些组件,常见问题,易错点以及如何避免,同时提供代码示例。 1....JTable JTable用于展示二维数据,如表格形式数据。它可以从数组、列表或模型中获取数据。...避免方法:使用JScrollPane包裹JTable。 2. JTree JTree用于展示层次结构数据,如文件系统或组织结构。...结语 JTable、JTree和JTextArea是Swing中展示和处理数据重要组件。理解它们用法,注意常见设计模式和错误,可以帮助你创建出功能丰富用户界面。...在实践中,结合不同布局管理器和组件,你可以构建出各种复杂界面。

13610

希尔排序是一种…排序方法_希尔排序法属于

大家好,又见面了,是你们朋友全栈君。 1,有关插入排序 (1)插入排序基本方法是:每步将一个待排序元素,按其排序码大小插入到前面已经排好序一组元素适当位置上去,直到元素全部插入为止。...:n/3向下取+1=3(关于increment取法之后会有介绍)。...图解如下: 4>第3趟把间隔缩小为increment= increment/3向下取+1=1,当增量为1时候,实际上就是把整个数列作为一个子序列进行插入排序,图解如下: 5>直到...(4)希尔排序算法代码实现(C++) //函数功能,希尔排序算法对数字递增排序 //函数参数,数列起点,数列终点 void shell_sort(const int start, const int...后来Knuth提出取increment=n/3向下取+1.还有人提出都取奇数为好,也有人提出increment互质为好。应用不同序列会使希尔排序算法性能有很大差异。

40420

Python学习(三) 八大排序算法实现(上)

上篇来介绍前四种排序方式:    下篇:八大排序算法实现(下) 1、直接插入排序 描述    插入排序基本操作就是将一个数据插入到已经排好序有序数据中,从而得到一个新、个数加一有序数据...为整数列表,radix为基数 k = int(math.ceil(math.log(max(lists), radix))) # math.ceil函数是对浮点数向上取,math.log...return lists print radix_sort(lists) 3.冒泡排序 描述 它重复走访过要排序数列,一次比较两个元素,如果他们顺序错误就把他们交换过来...走访数列工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。...描述 通过一趟排序将要排序数据分割成独立两部分,其中一部分所有数据都比另外一部分所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

67380

【php基础】php几种排序算法比较

这里列出了几种PHP排序算法时间比较结果,,希望对大家有所帮助 /* * php 四种排序算法时间与内置sort排序比较 * 3000个元素,四种算法排序所用时间比较 * 冒泡排序...排序 0.95200538635254ms * 归并排序 14.61386680603ms * */ /* * @param 冒泡排序 * 它重复走访过要排序数列,一次比较两个元素,如果他们顺序错误就把他们交换过来...* 走访数列工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。...* 归并排序是指将两个或两个以上有序数列(或有序表),合并成一个仍然有序数列(或有序表)。...,合并 //计算拆分位置,长度/2 去 $center = floor(($left+$right) / 2); //递归调用对左边进行再次排序

1.1K130

Java实现超市管理系统(含数据库)

来源:https://blog.csdn.net/qq_44859533 ---- 序言: 这次写超市管理系统,实现功能有账户注册、登录,超市商品类别的添加、修改和删除以及商品添加、修改和删除功能...超市管理系统一些功能还没有完善,后续还会更新顾客登录超市系统后,只能拥有查询商品权限,并且还可以实现购买商品功能。 1、首先是建立数据库表: ? ? ? ? 2、实现主页面: ?...setVisible(true); }else{ JOptionPane.showMessageDialog(null,"登录失败,用户名密码错误...((String)jTable1.getValueAt(row,0)); goodsTypeNameTxt.setText((String)jTable1.getValueAt(row,...PS:如果觉得分享不错,欢迎大家随手点赞、在看。 END

3.4K31

python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法

动图演示 不知道为什么图片上传不了,请点击下方阅读原文 3....它重复走访过要排序数列,一次比较两个元素,如果他们顺序错误就把他们交换过来。走访数列工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。...这个算法名字由来是因为越小元素会经由交换慢慢“浮”到数列顶端。 冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。...针对所有的元素重复以上步骤,除了最后一个。 持续每次对越来越少元素重复上面的步骤,直到没有任何一对数字需要比较。 2. 动图演示 不知道为什么图片上传不了,请点击下方阅读原文 3....(如果待插入元素与有序序列中某个元素相等,则将待插入元素插入到相等元素后面。) 2. 动图演示 不知道为什么图片上传不了,请点击下方阅读原文 3.

1.7K30

java swing 添加 jcheckbox复选框

通过一段代码来创建属于我们窗体: 1 import javax.swing.JFrame; 2 2 3 3 /** 4 4 * 第一个Java窗体 5 5 * 6...①首先我们需要面板(JPanel)或其他容器控件承载表格(JTable),值得一提是:由于窗体本身就是容器型控件,您可以考虑将表格单个放置在窗体上。...比如上面的例子JTable(TableModel dm),这是JTable构造方法,需要是一个TableModel接口类型参数(这里只是举例,实际运用比较复杂),我们可以使用如下写法:JTable...在详细说明之前先解释一下JTable显示原理:       首先是数据来源,您使用JTable构造方法,大部分重载中参数即包含了数据,比如JTable(VectorrowData, Vector columnNames...直接设置为透明,这里是用了一种明暗交替颜色转换,所以背景颜色设置了一下 79 ck.setOpaque(false); 80

3.3K00

排序

排序是利用堆这种数据结构而设计一种排序算法,堆排序是一种选择排序,它最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。...所以,堆每一层数据个数其实是个等比数列,该等比数列总和是 20 + 21 + 22 + ..... + 2n。 根据等比数列公式: ?...一个堆结构中,最后一个非叶子节点索引,可以用array.count / 2 - 1来求出。 为什么最后一个父节点下标是array.count /2 - 1呢?...此时如果array.count /2 可以取小数位的话,array.count / 2 - 3/2也正好是整数,由于array.count /2 是向下取,因此3/2也去掉一个0.5就是要取父节点下标拉...堆排序实现 根据上述基本步骤和思想,我们来实现一下堆排序(注意这是错误实现): /** 堆排序 @param randomNumbers 随机数组 @return 排序数组

39820

《常见排序算法》

冒泡排序 2.2 插入排序 1)【定义】:从一堆待排序数列中选出来一个最小值(可以认为第一个数就是已排序数列),然后从剩余排序数列中选出来最小值有序放到已排序数列中,依次操作,直到最后数列都是一个从小到大有序数列为止...2)【代码实现】: 插入排序 2.3 选择排序 1)【定义】: 从一堆待排序数列中选出来一个最小值,放到新数组第一个位置,继续从剩余数列中选取最小值放入到数组中,重复上面的步骤,将数字都取出来排成新有序数列...2)【代码实现】: 选择排序主函数 选择排序子函数 2.4 希尔排序 1)【定义】: 插入排序一种改进,先比较一定距离元素成为有序数列,再比较缩小增量距离元素(可为元素数量一半),一直到比较是相邻元素时候.../p/6129630.html 2)【代码实现】 堆排序主函数heapSort() 堆排序子函数 2.6 归并排序 1)【定义】:就是将待排序数列看成是单个有序数列,然后进行合并,直到合并成最后完成有序数列...mergeSort() 归并排序子函数mergePass() 归并排序子函数merge() 2.7 快速排序 1)定义:该算法基本思想是: 1.先从数列中取出一个数作为基准数。

64370

php基础算法有哪几种

但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,想还是要掌握。...它重复走访过要排序数列,依次比较两个元素,如果他们顺序错误就把他们交换过来。走访数列工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。...事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它内部循环(inner loop)可以在大部分架构上很有效率被实现出来,且在大部分真实世界数据,可以决定设计选择,减少所需时间二次方项之可能性...步骤: 1.从数列中挑出一个元素,称为 “基准”(pivot), 2.重新排序数列,所有元素比基准值小摆放在基准前面,所有元素比基准值大摆在基准后面(相同数可以到任一边)。...在这个分区退出之后,该基准就处于数列中间位置。这个称为分区(partition)操作。 3.递归(recursive)把小于基准值元素数列和大于基准值元素数列排序

1K10

Java实现冒泡排序详细代码

大家好,又见面了,是你们朋友全栈君。 冒泡排序定义 冒泡排序(Bubble Sort)也是一种简单直观排序算法。它重复走访过要排序数列,一次比较两个元素,如果他们顺序错误就把他们交换过来。...走访数列工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法名字由来是因为越小元素会经由交换慢慢”浮”到数列顶端。 算法步骤 比较相邻元素。...对每一对相邻元素作同样工作,从开始第一对到结尾最后一对。这步做完后,最后元素会是最大数。 针对所有的元素重复以上步骤,除了最后一个。...持续每次对越来越少元素重复上面的步骤,直到没有任何一对数字需要比较。...具体Java代码实现 /** * *@author g0rez *@data 2021-05-16 * */ public class 冒泡排序 { public static void

17930

你所能用到数据结构(三)

作为第一批冲刺突破二次时间界算法之一,从交换距离较远元素这个思路出发,在每一次交换中奖待排序数列分为若干对,两两交换,但是这两个对距离由近及远,不停交换,看起来感觉有点抽象,那么就先从代码开始好了...所以说,有的时候,事情不仅仅不是你看到那样而且换一种看似不 看起来确实令人挺不可思议,但是为什么呢,如果让从一个最通俗方式来解释的话,虽然这里有三个循环,但是在你会发现因为外面两个循环原因,最里面一个循环执行次数是很少...,有一种Hibbard增量可以使得希尔排序速度达到0(N^2/3),这也是为什么希尔排序是能突破二次时间界算法。...,觉得很多书把这个作为递归思想启蒙例子很有误导性,因为斐波那契数列计算,如果使用递归的话,效率是非常差,虽然这个求斐波那契数列某一项代码很简单,还是贴出来一下。...明显,这种想法是错误。      来看这样一个例子,将一个数字倒序输出,比如输入是12345,输出是54321,这个问题解法相当简单,就是不停将自身对10取余,不停数以10。

48770

排序算法一览(上):交换类、选择类和插入类排序

最近在复习常用排序算法发现了下面这个罪恶排序方法列表页面,被那些有趣排序方法诱惑了,就把上面介绍各种排序方法都整理了一遍(觉得维基百科比其它看过算法书都要易懂一些),前半部分可以说还乐在其中...交换类排序 冒泡排序(Bubble Sort) 最原始交换类排序方式。走访要排序数列,一次比较两个元素,如果他们顺序错误就把他们交换过来。...走访数列工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。...递归(recursive)把小于基准值元素数列和大于基准值元素数列排序。...因此,上述三条性质唯一定义了笛卡尔树。若数列中存在重复值,则可用其它排序原则为数列中相同元素排定序列,例如以下标较小数为较小,便能为含重复值数列构造笛卡尔树。

43010

新萌学Python之 冒泡算法排序

忆往昔,在初入it江湖时,头一次interview时被问一个问题就是冒泡算法排序手写,一开始是懵,为什么呢,因为刚从学校毕业,实习期面试,因为本科学是信息管理,半路出家,对编程产生兴趣...... .. .跑题了,为什么决定开始写一些学习中记录呢,以后老了,给孙子吹啊!...调用既可,直接原列表排序,不返还新列表; sorted()是python内置全局方法来对可迭代序列排序生成新序列.即需要参数接收....原理: 是一个简单排序算法,它重复遍历要排序数列,依次比较两个元素,如果前者比后者大就进行交换操作.遍历数列循环进行直接没有再需要交换,这数列已经排序完成.算法因为越小元素会经过交换操作慢慢浮出到数量顶端所以得名冒泡算法...又称鸡尾酒排序(双向冒泡算法) 让排序一次循环,可以相对左右各排一次,相对基础冒泡算法来说,对于大量数据排序来说,可以节省了时间,虽然两次程序执行时间都是0.1s, 毕竟是小数据嘛!!!

53500

万字肝货 | 讲述Python在 高中信息技术 中6大应用问题!

大家好,是快快。今天为大家讲解几道Python应用在高中信息技术中经典题目。...4.求任意项Fibonacci数列Python编程 理论上讲,Fibonacci数列值是无穷,如何使用Python编程来实现输出Fibonacci数列任意项?...之后每一格中米粒数目都是相邻前一格两倍,一直放到最后第64格,只要这一棋盘大米。”...3.map()函数映射法 如果充分利用Python中各种内置函数,比如map()映射函数,可以非常巧妙快速“提取”出每个多位数上各数位数字。...,意思是“类型错误:浮点型对象不能解释为整数型”,因为range()函数接收参数必须是整数(可以是负数),而不能直接处理float浮点数。

2.5K20
领券