链表排序java_java有序链表

链表排序java_java有序链表这是自己的第一篇博客,话说学习是50%的学习,另外50%是解释,以后会分享自己遇到的一些问题,欢迎各位大佬指教。第一篇对象数组排序的问题处理。..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

这是自己的第一篇博客,话说学习是50%的学习,另外50%是解释,以后会分享自己遇到的一些问题,欢迎各位大佬指教。
今天在进行数据处理时遇到了对象数组排序的问题,现总结如下:

一.链表中存放的数据是字符串数据

1.可以直接使用Collections.sort(list)的方法来对字符串按字典序进行排序,以及利用Collections.reverse(list)来进行字典倒序排序。(因为String类已经实现了Comparable接口)

		ArrayList<String> list=new ArrayList<String>();
		list.add("123");
		list.add("2");
		list.add("13");
		Collections.sort(list);

运行结果
2.如果上面的排序不能满足我们的要求,那么我们需要去自定义排序方法对集合进行排序,自定义排序需要实现Comparator接口,并重写排序方法int compare(String s1,String s2)
(Comparator接口中有一个方法int compare(T s1,t s2)。这个方法返回值为int,说明比较结果s1和s2,如果返回值小于0,则s1<s2;返回值等于0,s1=s2;返回值大于0,s1>s2)

		ArrayList<String> list=new ArrayList<String>();
		list.add("123");
		list.add("2");
		list.add("13");
		Collections.sort(list,new Comparator<String>() {
			public int compare(String o1,String o2)
			{
				int flag=1;
				if(Integer.parseInt(o1)<Integer.parseInt(o2))
					flag=-1;
				if(Integer.parseInt(o1)==Integer.parseInt(o2))
					flag=0;
				return flag;
			}
		});

在这里插入图片描述

二.链表中存放的数据是对象数据

这种情况和链表中存放的数据是String类型,笔者认为处理方式如出一辙,只不过要在对象的基础上找到某一成员变量,然后根据其进行排序。例:对Count对象的number按照数据大小升序排列。按降序排列只需要处理compare方法即可。

public class Count{
	private String number;

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}}
	ArrayList<Count> list2=new ArrayList<Count>();
	Count a=new Count();a.setNumber("13");list2.add(a);
	Count b=new Count();b.setNumber("123");list2.add(b);
	Count c=new Count();c.setNumber("2");list2.add(c);
	Collections.sort(list2);
	Collections.sort(list2,new Comparator<Count>() {
		public int compare(Count o1,Count o2)
		{
			int flag=-1;
			if(Integer.parseInt(o1.getNumber())<Integer.parseInt(o2.getNumber()))
				flag=1;
			if(Integer.parseInt(o1.getNumber())==Integer.parseInt(o2.getNumber()))
				flag=0;
			return flag;
		}
	});

在这里插入图片描述

三. Java比较器Comparable和Comparator的区别

比较器在对对象数组排序时至关重要,二者有一定的区别。因为Comparable接口是在设计类时,考虑到让类去实现该接口,如果在设计类时没有考虑到,那就可以通过Comparator来实现排序功能;这两个接口需要重写的方法区别之处:Comparable接口对应排序方法为int compareTo(Object b),返回值取值代表大小比较和int Compare(T s1,t s2)相同,显而易见二者参数个数不同。下面举一个利用Comparable的例子:

package dateProcess;

public class Count implements Comparable{
	private String number;

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}
	
	public int compareTo(Object b)
	{
		Count s=(Count) b;
		int flag=1;
		if(Integer.parseInt(this.getNumber())<Integer.parseInt(s.getNumber()))
			flag=-1;
		if(Integer.parseInt(this.getNumber())==Integer.parseInt(s.getNumber()))
			flag=0;
		return flag;
	}

}
ArrayList<Count> list2=new ArrayList<Count>();
		Count a=new Count();a.setNumber("13");list2.add(a);
		Count b=new Count();b.setNumber("123");list2.add(b);
		Count c=new Count();c.setNumber("2");list2.add(c);
		Collections.sort(list2);

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183236.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月11日 上午10:46
下一篇 2022年10月11日 上午10:46


相关推荐

  • 您的pycharm评估已过期_pycharm许可证过期

    您的pycharm评估已过期_pycharm许可证过期2020年10月国企,看来需每年操作一次

    2022年8月26日
    11
  • Bootstrap表格样式

    Bootstrap表格样式Bootstrap 表格样式 Bootstrap 表格样式分类基础样式 table2 带背条纹表格 table striped3 带边框 table border4 悬停 table hover5 紧凑 table condensed6 行样

    2026年3月19日
    2
  • Android 低功耗蓝牙开发

    Android 低功耗蓝牙开发初识低功耗蓝牙Android4.3(APILevel18)开始引入BluetoothLowEnergy(BLE,低功耗蓝牙)的核心功能并提供了相应的API,应用程序通过这些API扫描蓝牙设备、查询services、读写设备的characteristics(属性特征)等操作。AndroidBLE使用的蓝牙协议是GATT协议,有关该协议的详细内容可以参见蓝牙官方文…

    2022年6月18日
    74
  • IntelliJ IDEA 详细图解最常用的配置 ,适合刚刚用的新人。

    IntelliJ IDEA 详细图解最常用的配置 ,适合刚刚用的新人。IntelliJIDEA使用教程(总目录篇)刚刚使用IntelliJIDEA编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改tab的显示的数量和行数,打开项目方式,等等一大堆东西。总结一下,免得下次换了系统,还得再找一遍配置。具体总结如下图:设置外观和字体大小这…

    2022年5月21日
    44
  • 中间人攻击(MITM)姿势总结[通俗易懂]

    中间人攻击(MITM)姿势总结[通俗易懂]相关学习资料 http://www.cnblogs.com/LittleHann/p/3733469.htmlhttp://www.cnblogs.com/LittleHann/p/3738141.htmlhttp://www.cnblogs.com/LittleHann/p/3741907.htmlhttp://www.cnblogs.com/LittleHann/p/37082…

    2025年7月10日
    4
  • 自定义oncontextmenu[通俗易懂]

    自定义oncontextmenu[通俗易懂]<!doctypehtml><html><head><metacharset=”utf-8″><metaname=”author”content=”智能社-zhinengshe.com”/><metaname=”copyright”content=”智能社-zhinengshe.com”…

    2022年8月14日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号