Topic: 关于java编程的一个问题

  Print this page

1.关于java编程的一个问题 Copy to clipboard
Posted by: jeffwang66
Posted on: 2009-06-18 21:29

我想问一下,如果我想让一组数据按从大到小的顺序顺序存储,请问在java中有没有特定的数据结构或者函数可以实现?

2.Re:关于java编程的一个问题 [Re: jeffwang66] Copy to clipboard
Posted by: skwujinhua
Posted on: 2009-06-19 11:39

如果這組數據是類類型的話﹐用TreeSet
import java.util.*;
class treesetdemo{
public static void main(String args[])
{
TreeSet ts = new TreeSet();
ts.add("c");
ts.add("a");
ts.add("b");
ts.add("e");
ts.add("d");
System.out.println(ts);
}
}

輸出如下﹕
[a,b,c,d,e]

3.Re:关于java编程的一个问题 [Re: jeffwang66] Copy to clipboard
Posted by: skwujinhua
Posted on: 2009-06-19 14:48

import java.util.*;
public class util {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    TreeSet ts = new TreeSet();
    ts.add("a");
    ts.add("d");
    ts.add("b");
    ts.add("c");
    for (int i = ts.size()-1 ; i >=0; i --)
    {
      //System.out.println(ts);
      System.out.println(ts.last());
      ts.remove(ts.last());
    }
  }

}

輸出﹕
d
c
b
a

4.Re:关于java编程的一个问题 [Re: jeffwang66] Copy to clipboard
Posted by: skwujinhua
Posted on: 2009-06-19 16:08

看了半天書﹐找到從大到小存儲怎么搞了。

用比較函數。
Comparator接口定義二個方法。
compare() equals()

int compare(Object obj1,Object ojb2)
對象相等返回0, obj1 > ojb2 返回正值﹐否則返回負值。
可以覆蓋compare()﹐從而改變對象排序的方式。通過創建一個顛
倒比較輸出的比較函數﹐就可以按從大到小了。
class MyComp implements Comparator
{
public int compare (Object a,Object b)
{
String aStr,bStr;
aStr = (String )a;
bStr = (String )b;
return bStr.compareTo(aStr); //如果從小到大return aStr.compareTo(bStr);
}
}

class CompDemo{
public static void main(String args[])
{
TreeSet ts = new TreeSet(new MyComp());
ts.add("c");
ts.add("a");
ts.add("b");
ts.add("e");
ts.add("d");

Iterator i = ts.iterator();
while(i.hasNext())
{
Object element = i.next();
System.out.println(element + "");
}
System.out.println();
}
}

輸出﹕f e d c b a

5."关于java编程的一个问题"的問題。 [Re: jeffwang66] Copy to clipboard
Posted by: skwujinhua
Posted on: 2009-06-22 08:04

書上明明說Comparator接口定義二個方法。
compare()和 equals()
class MyComp implements Comparator
{
public int compare (Object a.Ojbect b)
{
String aStr,bStr;
aStr = (String )a;
bStr = (String )b;
return bStr.compareTo(aStr); //如果從小到大return aStr.compareTo(bStr);
}
}
但這個類中只重寫了compare(Object a, Object b)
equals()沒有重寫啊﹐在類中引用接口﹐那么在本類中不是都要實現接口中定義的方法嗎?
哪個高手說說? 那只企鵝咋好几天不見了?

6.Re:"关于java编程的一个问题"的問題。 [Re: skwujinhua] Copy to clipboard
Posted by: ivanna
Posted on: 2009-06-22 12:00

skwujinhua wrote:
書上明明說Comparator接口定義二個方法。
compare()和 equals()
class MyComp implements Comparator
{
public int compare (Object a.Ojbect b)
{
String aStr,bStr;
aStr = (String )a;
bStr = (String )b;
return bStr.compareTo(aStr); //如果從小到大return aStr.compareTo(bStr);
}
}
但這個類中只重寫了compare(Object a, Object b)
equals()沒有重寫啊﹐在類中引用接口﹐那么在本類中不是都要實現接口中定義的方法嗎?
哪個高手說說? 那只企鵝咋好几天不見了?


任何一个类 都是 Object类的子类,非特殊情况不需要override Object类的methods,eg. equals(), clone(), wait(), etc..

7.Re:关于java编程的一个问题 [Re: jeffwang66] Copy to clipboard
Posted by: skwujinhua
Posted on: 2009-06-22 15:16

謝謝﹐差不多懂了﹐只是感覺有點朦朦朧朧.嘿嘿。。。不過知道方向了﹐
謝謝ivanna.

8.Re:关于java编程的一个问题 [Re: jeffwang66] Copy to clipboard
Posted by: skwujinhua
Posted on: 2009-06-22 15:17

還有另一種方法﹐用Arrays,也是重寫compare(Object ,Object)
Arrays有個排序的方法.

9.Re:关于java编程的一个问题 [Re: jeffwang66] Copy to clipboard
Posted by: abefirst
Posted on: 2009-06-28 10:19

谢谢了啊,一直没有明白呢。謝謝ivanna

10.Re:关于java编程的一个问题 [Re: jeffwang66] Copy to clipboard
Posted by: abefirst
Posted on: 2009-06-28 10:21

也感谢skwujinhua
提出那个问题


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923