利用树集进行数据排序

    排序涉及对象的大小关系。String类实现了Comparable接口,规定字符串按字典序比较大小。而对于非字符串的其他数据,创建对象的类必须实现Comparable接口,即实现接口中的方法int compareto(Object b)来规定对象的大小关系,原因是sort方法在排序时需要调用名为compareTo的方法比较对象的大小关系。无论是collection类的static sort(List<T> list)方法还是Arrays类的static sort(T[] a)都是面向Comparable接口设计的。

    总之涉及排序,就要实现Comparable接口,并重写compareTo方法,默认升序,a.compareTo(b)<0时,a<b,=0时相等,大于0时则a>b。

    树集节点的排列和链表不同,不按添加的先后顺序排列。树集用add方法添加节点,节点会按其存放的数据大小顺序一层一层地依次排列。同一层的节点从左往右按大小顺序递增,下一层的比上一层的大。

    比如:有个树集对象myTree,利用add方法添加节点。

                 myTree.add("boy"); myTree.add("zoo"); myTree.add("girl"); myTree.add("apple"); 则第一个节点(在第一层)为apple,第二个节点(在第二层)为boy,第三个节点(在第二层)为girl,第四个节点(在第三层)为zoo。由于String类的compareTo对大小相等的两个节点未做处理,所以当再次添加大小相同的节点时,与之前的节点合并。


下面是利用树集和对象数组输出排序后的对象数据。

import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.TreeSet;
//利用树集实现一些操作,树集本身以升序方式保存实现了comparable接口的类的对象

class Student implements Comparable{
	String name;
	int score=0;
	Student(String name,int score){
		this.name=name;
		this.score=score;
	}
	public int compareTo(Object o){
		Student stu = (Student)o;

		if(score!=stu.score)
			return score-stu.score;
		else
			return 1;//成绩相等则默认后添加的节点大,没有此句,则TreeSet覆盖成绩相等的数据
	}
	
}
public class Main {
	
	public static void main(String[] args) {
		System.out.println("利用树集排序输出对象");
		TreeSet<Student> myTree=new TreeSet<Student>();
		myTree.add(new Student("钱二",90));
		myTree.add(new Student("赵一",66));
		myTree.add(new Student("李三",86));
		myTree.add(new Student("孙四",66));
		Iterator<Student> iter=myTree.iterator();
		while(iter.hasNext()){
			Student t=iter.next();
			System.out.println(t.name+"  "+t.score);
		}
		
		System.out.println("对象数组排序:");
		Student[] stu=new Student[4];
		stu[0]=new Student("钱二",90);
		stu[1]=new Student("赵一",66);
		stu[2]=new Student("李三",86);
		stu[3]=new Student("孙四",66);
		Arrays.sort(stu);
		for(Student i:stu)
			System.out.println(i.name+"  "+i.score);
		
	}
}

输出:

利用树集排序输出对象
赵一  66
孙四  66
李三  86
钱二  90
对象数组排序:
赵一  66
孙四  66
李三  86
钱二  90

其他方法:1. 用链表保存对象数据,然后用Collections类的静态sort方法对链表排序,用迭代器遍历输出。

                    2, 也可以用TreeMap替换TreeSet,区别是前者对关键字进行升序,后者对对象进行升序,即前者compareTo的重写交给Key类(保存着成绩数据),后者交给Student类(虽然也保存着成绩数据)。TreeMap的好处是当关键字变了,基于成绩的排序可扩展,即可以按照英语成绩排序也可以按照数学成绩排序。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 利用Python进行数据分析,首先需要准备数据集。数据集可以来源于多种途径,比如网页爬取、数据库查询、文件导入等等。在数据集准备好后,就可以通过Python中的数据分析库进行数据的处理和分析。 Python中最常用的数据分析库是Pandas和Numpy。Pandas提供了丰富的数据结构和数据处理函数,可以对数据进行清洗、过滤、转换等操作。Numpy是Python中的数值计算库,提供了大量的数学和统计函数,可以方便地进行数据分析和计算。 首先,我们可以使用Pandas将数据集导入到Python中。Pandas提供了多种数据导入函数,比如read_csv、read_excel等,可以根据数据集的格式选择合适的函数进行导入。 导入数据后,我们可以使用Pandas对数据进行初步的处理和探索。比如查看数据的基本信息,包括数据的列名、数据类型、缺失值等。可以使用head()函数查看数据的前几行,使用describe()函数查看数据的统计特征。 接下来,我们可以使用Pandas和Numpy进行数据清洗和转换。比如,对于缺失值可以选择删除或填充;对于异常值可以选择删除或修复;可以进行数据类型的转换;可以进行数据的标准化或归一化等。 之后,我们可以使用Pandas和Numpy进行数据分析。比如,使用groupby()函数进行数据分组和聚合,使用plot()函数进行数据可视化,使用统计函数进行数据分析等。还可以使用其他的数据分析库,比如Matplotlib和Seaborn进行高级的数据可视化。 最后,我们可以使用Python中的其他库进行更深入的数据分析。比如,可以使用Scikit-learn进行机器学习模型的建立和训练;可以使用TensorFlow进行深度学习模型的开发和调优等。 总之,利用Python进行数据分析需要先导入数据集,然后使用Pandas和Numpy进行数据处理和转换,最后使用其他的数据分析库进行更深入的数据分析。Python提供了丰富的数据分析工具和库,可以满足各种需求。 ### 回答2: 利用Python进行数据分析有许多方法和技术,以下是一些常用的数据分析工具和技巧。 首先,Python有很多强大的数据分析库,如NumPy、Pandas和Matplotlib。NumPy提供了高效的数值计算工具,可以进行向量化操作和高性能的数组处理。Pandas是一个用于数据结构和数据分析的库,可以方便地进行数据清洗、处理和操作。Matplotlib则是一个用于画图和可视化的库,可以将数据可视化为柱状图、散点图等。 其次,Python提供了很多统计学方法和技术,如描述统计、假设检验和回归分析等。使用Python进行描述统计可以计算数据的中心趋势和离散程度,如均值、中位数和标准差;使用假设检验可以检验数据之间是否存在显著差异;使用回归分析可以探索变量之间的关系和预测结果。 另外,Python还提供了机器学习算法和工具,如线性回归、决策和聚类等。机器学习是一种通过训练数据来建立模型并进行预测的方法,可以用来解决分类、回归和聚类等问题。Python中的一些机器学习库如Scikit-learn和TensorFlow,提供了丰富的机器学习算法和工具,方便进行数据挖掘和预测分析。 最后,Python还有一些数据分析的框架和平台,如Jupyter Notebook和Anaconda。Jupyter Notebook是一个交互式的数据分析环境,可以通过代码、文字和图像组合成一个文档,方便数据分析的展示和共享。Anaconda是一个Python科学计算的发行版,集成了许多常用的数据分析库和工具,方便安装和管理。 综上所述,利用Python进行数据分析可以通过强大的数据分析库、统计学方法和技术、机器学习算法和工具以及数据分析的框架和平台来实现。Python的简洁易学、丰富的库和工具生态系统,使其成为数据分析的首选语言之一。 ### 回答3: 利用Python进行数据分析有很多优点,首先Python是一种开源的编程语言,具有用户友好的语法和丰富的数据处理工具包,如NumPy、Pandas和Matplotlib等。这些工具使我们能够高效地处理和分析大量数据。 在进行数据分析时,首先需要加载数据集。Python提供了多种数据加载和处理方法,例如可以使用`pandas`库中的`read_csv()`函数加载CSV文件,或者使用`pandas`的`read_excel()`函数加载Excel文件。这样我们就可以在Python中轻松地获取数据集了。 一旦数据集被加载,我们就可以使用Python进行各种数据分析任务。例如,我们可以使用`pandas`库来清洗和处理数据,如删除重复数据、处理缺失值、拆分或组合列等。`pandas`还提供了各种统计函数,如求和、均值、中位数等,方便我们对数据进行描述性统计分析。 除了`pandas`外,Python还有其他强大的数据分析库,如`NumPy`和`SciPy`,它们提供了许多数学和科学计算函数,可以用于进行数据预处理、聚类分析、回归分析等。 在数据分析中,可视化也是非常重要的一部分。Python的`Matplotlib`和`Seaborn`库提供了丰富的数据可视化工具,我们可以使用这些库来创建直方图、散点图、条形图等各种图表,以便更好地理解和展示数据。 总之,利用Python进行数据分析可以帮助我们更高效地处理和分析大量数据,并且通过可视化工具可以更好地展示分析结果。无论是学术研究还是商业决策,Python都是一个非常强大的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值