链表排序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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 全局平均池化(Global Average Pooling)

    出处:LinM,ChenQ,YanS.Networkinnetwork[J].arXivpreprintarXiv:1312.4400,2013.定义:将特征图所有像素值相加求平局,得到一个数值,即用该数值表示对应特征图。目的:替代全连接层效果:减少参数数量,减少计算量,减少过拟合思路:如下图所示。假设最终分成10类,则最后卷积层应该包含10个滤波器(即输…

    2022年4月6日
    64
  • 排序算法时间复杂度、空间复杂度、稳定性比较[通俗易懂]

    排序算法时间复杂度、空间复杂度、稳定性比较[通俗易懂]排序算法分类排序算法比较表格填空排序算法平均时间复杂度最坏时间复杂度空间复杂度是否稳定冒泡排序:————-::—–::—–::—–:选择排序:————-::—–::—–::—–:直接插入排序:————-::—–::—–::—–:归并排序:————-::—–::

    2022年5月15日
    44
  • vue与jquery的区别_vue 3

    vue与jquery的区别_vue 31.jquery介绍:想必大家都用过jquery吧,这个曾经也是现在依然最流行的web前端js库,可是现在无论是国内还是国外他的使用率正在渐渐被其他的js库所代替,随着浏览器厂商对HTML5规范统一遵循以及ECMA6在浏览器端的实现,jquery的使用率将会越来越低2.vue介绍:vue是一个兴起的前端js库,是一个精简的MVVM。从技术角度讲,Vue.js专注于MVVM模型的ViewM…

    2022年10月16日
    2
  • python使用matplotlib绘图 — barChart

    python使用matplotlib绘图 — barChartmatplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且

    2022年7月6日
    20
  • 用js来实现那些数据结构13(树01-二叉搜索树的实现)

    前一篇文章我们学会了第一个非顺序数据结构hashMap,那么这一篇我们来学学树,包括树的概念和一些相关的术语以及二叉搜索树的实现。唉?为什么不是树的实现,不是二叉树的实现。偏偏是二叉搜索树的实现?嗯,

    2022年3月25日
    43
  • phpstorm 2021.4.2激活码_通用破解码

    phpstorm 2021.4.2激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    87

发表回复

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

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