| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1555 人关注过本帖
标题:[求助]对文件内容排序的问题
取消只看楼主 加入收藏
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
 问题点数:0 回复次数:10 
[求助]对文件内容排序的问题
#4
刘德华#222
张学友#204
郭富城#215
黎明#215

-----------------------

以上是一个文本内容,要求对#后面的分数进行排序,然后写入另一个文件中...
要考虑到有可能名字重复和#后面数字重复的情况

-----------------------

请问谁会?或给下思路,大概用哪个类?
搜索更多相关主题的帖子: 文件 
2007-02-10 18:30
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
是的,麻烦就麻烦在#二边都有可能会重复

我在说's blog   http://www..cn
2007-02-10 21:20
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 

谢谢楼上的各位帮忙



public int compareTo(Object obj) //这里的obj代表的是什么? 是每个ArraysSort的实例吗?
{
ArraysSort arrSort=(ArraysSort)obj;
if(intKey>arrSort.intKey) return 1; //inKey和arrSort.inKey怎么比的呀?intKey和arrSort.intKey每次比的不是同一个吗?
if(intKey<arrSort.intKey) return -1;
return 0;
}


我在说's blog   http://www..cn
2007-02-11 12:32
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
以下是引用purana在2007-2-11 11:14:39的发言:
import java.util.*;
import java.io.*;

public class SortTest{
public static void main(String[] args) throws IOException{
List<ArraysSort> list=new ArrayList<ArraysSort>();
BufferedReader buf=new BufferedReader(new FileReader("1.txt"));
ArraysSort sort=null;
String line=null;
for(;(line=buf.readLine())!=null;){
StringTokenizer token=new StringTokenizer(line,"#");
String value=token.nextToken();
int key=Integer.parseInt(token.nextToken());
sort=new ArraysSort(key,value);
list.add(sort);
}
buf.close();
ArraysSort[] sorts=new ArraysSort[list.size()];
for(int i=0;i<sorts.length;i++){
sorts[i]=(ArraysSort)list.get(i);
}

Arrays.sort(sorts);

PrintWriter print=new PrintWriter(new FileWriter("2.txt"),true);
for(int i=0;i<sorts.length;i++){
print.println(sorts[i].toString());
}
print.close();

System.out.println("ok");
}
}

class ArraysSort implements Comparable{
private int intKey;
private String strValue;

public ArraysSort(int intKey,String strValue){
this.intKey=intKey;
this.strValue=strValue;
}

public int getKey(){
return this.intKey;
}

public String getValue(){
return strValue;
}

public int compareTo(Object obj){
ArraysSort arrSort=(ArraysSort)obj;
if(intKey>arrSort.intKey) return 1; //inKey和arrSort.inKey怎么比的呀?intKey和arrSort.intKey每次比的不是同一个吗?
if(intKey<arrSort.intKey) return -1;
return 0;
}

public String toString(){
return strValue+"#"+intKey;
}
}

最不明白的就是如何来实现 public int compareTo(Object obj) 方法,
其中更不解的是这一句 intKey > arrSort.intKey
intKey是这个类的一个变量按说如果和arrSort.inKey比较,其中的intKey应该是不同的吧?
可是哪里可以看出intKey 和arrSort.intKey代表的是不同的intKey呢?


我在说's blog   http://www..cn
2007-02-11 13:31
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
以下是引用无理取闹在2007-2-11 13:40:55的发言:
compareTo用来和同类的不同对象的比较
至于怎么来判别是不是相同对象就是你自己实现的了

你还是没有解释我所问的最关键的问题


我在说's blog   http://www..cn
2007-02-11 13:43
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
最不明白的就是如何来实现 public int compareTo(Object obj) 方法,

1 其中更不解的是这一句 intKey > arrSort.intKey

intKey是这个类的一个变量按说如果和arrSort.inKey比较,其中的intKey应该是不同的吧?

可是哪里可以看出intKey 和arrSort.intKey代表的是不同的intKey呢?



一共1个问题

[此贴子已经被作者于2007-2-11 13:49:39编辑过]


我在说's blog   http://www..cn
2007-02-11 13:46
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
再具体些这句if(intKey>arrSort.intKey) return 1; 代表什么意思?

分别intKey代表什么?arrSort.intKey代表什么?

我在说's blog   http://www..cn
2007-02-11 13:48
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
Arrays.sort(sorts);
sorts是一个数组,它怎么知道你给出的 intKey是哪一个 而arrSort.intKey是另一个和当前对象比较的那个对象的属性

我在说's blog   http://www..cn
2007-02-11 14:00
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 

你不知道怎么回答了,我其实也不知道该怎么来问清楚我想要问的问题,挺让我糊涂的这问题,谢谢你,我再看下API


我在说's blog   http://www..cn
2007-02-11 14:08
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 
首先为什么ArraysSort 类要实现Comparable接口,
那是因为要用到Arrays.sort(Object obj)方法,
因为sort(Object obj)方法API里明确写出数组中的所有元素都必须实现 Comparable 接口!

--------------------------------上面这段话说的对吗?如果不对下面的话就没有必要再看了----------------------------------

下面来具体看purana是怎么来实现Comparable中的compareTo方法的

public int compareTo(Object obj)
{
ArraysSort arrSort=(ArraysSort)obj;
if(intKey>arrSort.intKey) return 1;
if(intKey<arrSort.intKey) return -1;
return 0;
}

很明确,如果intKey > arrSort.intKey则返回1,但是关键在于,这个compareTo是被Arrays.sort(Object obj)方法所调用的吧?

而此时就是sort方法中的obj一定是arrSort这个对象了,那么arrSort.intKey代表要对比的intKey,那么与之相比较的intKey是哪来的呢?


--------注:在上面话中由于多次提到intKey属性,固而用颜色将其区分开,相同颜色代表同一intKey

我在说's blog   http://www..cn
2007-02-11 14:20
快速回复:[求助]对文件内容排序的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038222 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved