java compareTo() 用法注意点

本文详细解释了Java中compareTo方法的工作原理,包括其在排序过程中的应用。通过具体代码示例,展示了如何在自定义类中实现Comparable接口,以及Collections.sort()方法如何自动调用compareTo进行排序。

转自:http://www.2cto.com/kf/201305/210466.html

compareTo就是比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1,我下面给出了例子,由于比较的变量我用的是int,int型可以直接比较,所有没有用到compareTo比较,如果声明的是Date、String、Integer或者其他的,可以直接使用compareTo比较,


 public int compareTo(TestModel1 o) {
  return this.str1.compareTo(o.str1);
 }

compareTo方法内必须做非空判断(规范问题),当然int类型就不用了。

注意事项:

        1模型必须实现Comparable<T>接口

        2Collections.sort(list);会自动调用compareTo,如果没有这句,list是不会排序的,也不会调用compareTo方法

        3如果是数组则用的是Arrays.sort(a)方法

 

代码如下:

package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
 public static void main(String[] args) {
  List<TestModel1> list = new ArrayList<TestModel1>();
  list.add(new TestModel1(1,"",""));
  list.add(new TestModel1(3,"",""));
  list.add(new TestModel1(2,"",""));
  list.add(new TestModel1(6,"",""));
  list.add(new TestModel1(9,"",""));
  list.add(new TestModel1(7,"",""));
  System.out.print("排序前:");
  for (TestModel1 t : list) {
   System.out.print(t.getInteger()+" ");
  }
  Collections.sort(list);//自动调用compareTo
  System.out.print("\n排序后:");
  for (TestModel1 t : list) {
   System.out.print(t.getInteger()+" ");
  }
 }
}

 


package test;

public class TestModel1 implements Comparable<TestModel1>{
 private int integer;
 private String str1;
 private String str2;
 public int getInteger() {
  return integer;
 }
 public void setInteger(int integer) {
  this.integer = integer;
 }
 public String getStr1() {
  return str1;
 }
 public void setStr1(String str1) {
  this.str1 = str1;
 }
 public String getStr2() {
  return str2;
 }
 public void setStr2(String str2) {
  this.str2 = str2;
 }
 public TestModel1(Integer integer, String str1, String str2) {
  super();
  this.integer = integer;
  this.str1 = str1;
  this.str2 = str2;
 }
 public int compareTo(TestModel1 o) {
  if(this.integer<o.integer)return -1;
  else if(this.integer==o.integer)return 0;
  else return 1;
 }
}

效果如下:

 \


转载于:https://www.cnblogs.com/jpfss/p/10455102.html

根据任晓松、孙莎、马茜(2024)提出的方法体系,投资者情绪指标的构建可遵循以下系统化流程:步骤一数据获取:定向采集2007至2024年间财经网络社区(包括股票主题贴吧及行业论坛)发布的全部股票相关帖子,提取发帖人标识、发布时间、标题文本、阅读量等结构化信息。步骤二文本预处理:对采集的原始文本实施系列净化操作:首先过滤无效及重复内容,随后采用jieba分词工具进行中文分词处理,剔除通用及领域特定停用词,最终通过TF-IDF算法将文本数据转换为机器可识别的数值向量。步骤三情感分类与日度情绪计算:采用朴素贝叶斯分类模型将帖子划分为乐观、中性、悲观三类情感倾向。针对上市企业i,依据第n日乐观帖子数(posi,n​)与悲观帖子数(negi,n​)构建情绪因子:smi,n​​=ln(1+negi,n​1+posi,n​​)该公式通过加1平滑处理保障数值稳定性,对数变换实现数据分布规范化。步骤四年度情绪指标构建:以自然年为观测周期,对周期内所有交易日的情绪因子smi,n​​进行算术平均,形成衡量企业i在第t年投资者情绪水平的综合指标senti,t​,有效捕捉市场参与者的中长期情感特征。该指标体系通过整合网络文本大数据与机器学习技术,为量化分析投资者心理偏差对资本市场的影响提供可操作的测量工具。相关数据股票代码、年份、 s_in、sent_(i,t)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值