cmparator比较器问题

sinat_35134692 2017-03-17 08:24:04
public static void main(String[] args){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
String str=in.nextLine();
char[] chr=new char[str.length()];
chr=str.toCharArray();
TreeSet<Character> ctr=new TreeSet<>(new Comparator<Character>(){
public int compare(Character ch1,Character ch2){
int cmp=ch1.compareTo(ch2);
if(cmp==0)
return 0;
else
return 1;
}
});
for(int i=str.length()-1;i>=0;i--)
ctr.add(chr[i]);
for(Character chp:ctr)
System.out.print(chp);
}
}
————————————————————————————————————————
输入12321,为什么输出是1231,最后一个1为什么进到了集合里?求解答
...全文
356 8 打赏 收藏 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_35134692 2017-03-24
  • 打赏
  • 举报
回复
引用 7 楼 zs808 的回复:
问题产生的原因主要在于你规定了“所有不等于的都是大于”,加上二叉树的平衡修正,就导致这种结果出现了。 下面来逐步进行分析: 首先,put(1)时: 1 nil nil put(2)时: 1 nil 2 nil nil put(3)时: 1 nil 2 nil 3 nil nil 此时,1的右侧节点数量与左侧节点数量差值位2,大于1,所以需要进行旋转: 2 1 3 nil nil nil nil 接下来put(2),由于2与根节点相同,所以不执行任何操作,树结构不变。 接下来就是问题的关键了,你插入了1,因为你规定了“不相等的都是大于的”,所以1会往右侧走,然后结果就相当于你插入了4,然后把4替换成1,就是: 2 1 3 nil nil nil 1 nil nil 此时,进行先序遍历,就成了1231了。
非常感谢分析
zs808 2017-03-21
  • 打赏
  • 举报
回复
问题产生的原因主要在于你规定了“所有不等于的都是大于”,加上二叉树的平衡修正,就导致这种结果出现了。 下面来逐步进行分析: 首先,put(1)时: 1 nil nil put(2)时: 1 nil 2 nil nil put(3)时: 1 nil 2 nil 3 nil nil 此时,1的右侧节点数量与左侧节点数量差值位2,大于1,所以需要进行旋转: 2 1 3 nil nil nil nil 接下来put(2),由于2与根节点相同,所以不执行任何操作,树结构不变。 接下来就是问题的关键了,你插入了1,因为你规定了“不相等的都是大于的”,所以1会往右侧走,然后结果就相当于你插入了4,然后把4替换成1,就是: 2 1 3 nil nil nil 1 nil nil 此时,进行先序遍历,就成了1231了。
moguobiao 2017-03-21
  • 打赏
  • 举报
回复
http://baike.baidu.com/item/%E4%BA%8C%E5%8F%89%E6%8E%92%E5%BA%8F%E6%A0%91/10905079
sinat_37976067 2017-03-20
  • 打赏
  • 举报
回复
引用 4 楼 moguobiao 的回复:
[quote=引用 3 楼 sinat_35134692 的回复:] [quote=引用 2 楼 moguobiao 的回复:] 问题出在: if(cmp==0) return 0; else return 1; } 当1 和 2比较时,cmp<0。这里却返回1,就会得到1大于2的错误。这也是为什么最后一个1进到了集合里。
我不太理解,最后一个1进集合的时候难道不是要和第一个1进行比较么?[/quote] Tree 结构下,不一定。[/quote] 可以具体解释下么?Tree节点的增加过程,非常感谢
moguobiao 2017-03-19
  • 打赏
  • 举报
回复
引用 3 楼 sinat_35134692 的回复:
[quote=引用 2 楼 moguobiao 的回复:] 问题出在: if(cmp==0) return 0; else return 1; } 当1 和 2比较时,cmp<0。这里却返回1,就会得到1大于2的错误。这也是为什么最后一个1进到了集合里。
我不太理解,最后一个1进集合的时候难道不是要和第一个1进行比较么?[/quote] Tree 结构下,不一定。
sinat_35134692 2017-03-19
  • 打赏
  • 举报
回复
引用 2 楼 moguobiao 的回复:
问题出在: if(cmp==0) return 0; else return 1; } 当1 和 2比较时,cmp<0。这里却返回1,就会得到1大于2的错误。这也是为什么最后一个1进到了集合里。
我不太理解,最后一个1进集合的时候难道不是要和第一个1进行比较么?
moguobiao 2017-03-19
  • 打赏
  • 举报
回复
问题出在: if(cmp==0) return 0; else return 1; } 当1 和 2比较时,cmp<0。这里却返回1,就会得到1大于2的错误。这也是为什么最后一个1进到了集合里。
sinat_35134692 2017-03-18
  • 打赏
  • 举报
回复
求助大神分析
内容概要:本文围绕“基于价格型需求响应”的研究展开,深入探讨了其在配电网与微电网系统中的应用机制,并提供了完整的Python代码实现方案。文章通过复现相关学术论文,系统阐述了价格型需求响应的建模方法、优化调度框架及其对电力系统运行的影响,重点分析了用户侧负荷在分时电价、实时电价等价格信号引导下的响应行为,旨在提升电力系统的供需匹配效率、削峰填谷能力与运行经济性。研究涵盖了问题建模、多目标优化函数设计、系统约束条件设定、求解算法实现等关键技术环节,并结合典型算例进行仿真验证,展示了需求响应在改善电网负荷曲线、降低运行成本方面的有效性。; 适合人群:具备一定Python编程基础和电力系统基础知识的研究生、科研人员及从事能源互联网、智能电网、综合能源系统等相关领域的工程师,尤其适合希望复现高水平论文、开展需求侧管理、低碳调度或参与相关课题研究的专业人士。; 使用场景及目标:① 学习并掌握价格型需求响应在主动配电网与微电网中的数学建模与优化调度方法;② 复现主流学术成果,为撰写科研论文、申报项目或参加竞赛提供可靠的代码与理论支撑;③ 深入研究电力市场环境下用户侧灵活性资源的调度潜力,支撑低碳、经济、可靠的综合能源系统优化运行研究。; 阅读建议:建议读者结合文中提供的Python代码与算法流程图,逐步理解模型构建的逻辑细节,调试并运行代码以观察不同参数设置下的仿真结果,进而深入掌握价格信号对负荷转移行为的引导机理与系统级优化效果。
内容概要:本文提出了一种基于形态学的权重自适应图像去噪方法,并提供了完整的Matlab代码实现。该方法深度融合深度学习与数学形态学理论,通过构建自适应权重机制来动态优化去噪过程,在有效去除高斯噪声、椒盐噪声等多种噪声的同时,最大限度保留图像的边缘结构和纹理细节。文中系统阐述了算法的设计原理、实现流程及关键参数配置,并通过大量实验验证了其在不同噪声水平下的鲁棒性与优越性,结果显示该方法在峰值信噪比(PSNR)和结构相似性(SSIM)等客观指标上均显著优于传统去噪算法,同时在视觉效果上表现出更强的细节保持能力。; 适合人群:具备一定图像处理基础知识和Matlab编程能力的科研人员、研究生以及从事计算机视觉、医学影像分析、遥感图像处理等相关领域的工程师。; 使用场景及目标:①应用于受噪声污染的数字图像修复,提升图像质量以满足后续分析需求;②为医学影像、卫星遥感、工业检测等对图像清晰度要求较高的领域提供高效的去噪技术支持;③作为深度学习与传统图像处理技术融合的典型案例,服务于相关算法研究与教学实践。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,深入理解算法各模块的实现逻辑,尤其关注形态学操作与权重自适应机制的结合方式,并尝试在多种噪声类型和强度下测试算法性能,通过调整参数观察其对去噪效果的影响,从而全面掌握该方法的核心思想与优化技巧。
内容概要:本文围绕永磁同步电机(PMSM)的高性能控制策略,深入研究了最大转矩电流比(MTPA)控制与双闭环矢量控制的仿真实现。通过Simulink搭建完整的电机控制系统模型,系统性地阐述了MTPA控制在低速区提升转矩输出效率的原理及其在高速弱磁区域的协同控制机制,同时详细构建了以电流环和速度环为核心的双闭环矢量控制框架。文章涵盖了控制策略的理论基础、控制框图设计、关键参数整定方法及仿真验证全过程,重点分析了d-q轴电流的协同调节、转速PI控制器的动态响应特性以及两种控制模式在不同工况下的性能表现。研究结果表明,所建立的仿真模型能准确反映永磁同步电机的动态运行特性,有效实现对电机转矩与转速的高精度控制,为电机控制算法的开发、优化及工程应用提供了可靠的理论支持与实践参考。; 适合人群:具备电机控制、电力电子或自动化等相关专业背景,熟悉Simulink仿真工具,正在从事电机驱动系统研发或学习的工程师、高校研究生及科研人员。; 使用场景及目标:①深入掌握永磁同步电机MTPA控制与双闭环矢量控制的核心原理、实现方法及其适用工况;②学习并实践基于Simulink的电机控制系统建模、仿真调试与性能分析技术;③为高性能伺服系统、电动汽车驱动、工业变频器等领域的电机控制器设计与优化提供技术借鉴与解决方案。; 阅读建议:在学习过程中应结合提供的Simulink模型进行动手实践,重点关注控制算法的实现细节、PI参数的整定过程以及不同工况下系统响应的变化,建议通过调整负载、转速等参数进行对比仿真,以深入理解控制策略的动态性能与鲁棒性。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧