JAVA数组对象排序维护

来源:互联网 发布:灯光编程教学视频 编辑:程序博客网 时间:2024/05/01 10:56

最近学信息可视化这门课时用processing(其编程语言实质就是java)进行编程遇到一个问题:我需要读进来10多万条数据,每一条数据组成一个Node对象,如何从中根据某一个属性读取该最大的前100个对象。 

 关于里面涉及的排序这个问题,很自然的我们可以用到java自带的排序方法。另一个需要解决的是如何根据数组对象进行排序。


  对此,我的想法如下:先读进来前100组数据,存入对象数组中并根据其中一个属性从小大大排序,从后面开始,每次读一组数据,比较第一个数组和这个数据的大小,如果这个数据大于数组top[0],替换,在此排序,如此循环下去。 




      代码如下,用java实现,还是比较容易的


void insertIpAct(int uid, long destip, String time,long send, long recv,String tdip) {        if(count<100){          Node node= new Node(uid,destip,time,send,recv,tdip);           top[count]=node;          count++;       } else {         Arrays.sort(top);         Node tempnode=top[0];         if(send>tempnode.sendSize){            Node node1= new Node(uid,destip,time,send,recv,tdip);             top[0]=node1;                    }      }   return;}




     Node类代码


class Node implements Comparable{   int uid;  long destIp;  String accessTime;  long sendSize;  long recvSize;  String dIp;     Node(int uid,long destIp, String accessTime,long sendSize, long recvSize,String dIp){     this.uid=uid;  this.destIp=destIp;  this.accessTime=accessTime;  this.sendSize=sendSize;  this.recvSize=recvSize;  this.dIp=dIp;  }       public int compareTo(Object object){  Node other=(Node) object; if(this.sendSize==other.sendSize)     return 0; if(this.sendSize>other.sendSize)     return 1;  return -1;  }}

其实就是在这个类中implements  Comparable,并在其中重写compareTo,这样就可以直接调用java下的Arrays.sort方法了,其实就这们简单。另外

如何读入.csv文件还是比较容易实现的,所以就没有给出代码,以上只是展示了本文所要讨论的最核心的部分。



原创粉丝点击