java ceiling

java ceiling,第1张

java ceiling是什么,让我们一起了解一下?

ceiling是将参数Number向上舍入(沿绝对值增大的方向)为最接近的significance的倍数,常用于TreeSet类ceiling()方法的使用。

TreeSet类ceiling()方法有哪些?

1、ceiling()方法在javautil包中可用。

2、ceiling()方法用于返回等于或大于给定元素(ele)的最低元素(如果存在),否则返回null。

3、ceiling()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

4、返回此TreeSet中的最小元素时, ceiling()方法可能会引发异常。

5、如果给定参数不兼容以进行比较,则可能引发异常。

6、当给定参数为null时,可能引发此异常。

我们以javautilTreeSetceiling()方法为例,实战 *** 作。 package comandy;   import javautilTreeSet;   public class TreeSetDemo {    public static void main(String[] args) {      // creating a TreeSet       TreeSet  treeadd = new TreeSet ();            // adding in the tree set      treeaddadd(12);      treeaddadd(11);      treeaddadd(16);      treeaddadd(15);            // getting the floor value for 13      Systemoutprintln("Floor value for 13: "+treeaddfloor(13));         Systemoutprintln("Ceiling value for 13: "+treeaddceiling(13));     }     }

回答这个问题,多半因为楼主这标题中的“小妹”二字,因为干这行的女生太少,既然这样,那必须将这些熊猫保护起来,那么,在下就。。。

这三个类其实考点有这几个,一个是java继承中的重载,一个是compareble这个接口,一个是treeset这个类。

先来讲Compareble这个接口吧,他是JDK提供的一个用于对象之间比较大小的接口。如果你希望你所写的对象是可以比较的,那么就需要提供一种比较的方式。比如:Person这个类,里面有age,name两个属性,你有可能想要按照age来比较,年龄小的排在年龄大的前面。或者你也可以根据名字的字典顺序来比较。这个就可以用Compareble来实现。

再回来看,Compareble接口中有一个compareTo方法,需要接受一个被比较的对象,返回的是一个int型。 返回值分为三类:

>0 表示该值大于所传参数的值

<0 表示该值小于所传参数的值

=0 表示该值等于所传参数的值

比如,一个实现了Compareble接口的对象A。

A a1 = new A();

A a2 = new A();

a1compareTo(a2) > 0 说明a1大于a2

很自然的,第一个类就解释的通了。

在Parent类中实现了这个compareTo方法,其比较规则是:

age>o1age1:age<o1age-1:0;(三目运算符,不懂请百度,或者追问)

翻译一下, 这句代码先判断age是否大于o1age 如果大于,就返回1

如果不大于,就判断age是否小于o1age,如果小于就返回-1,

否则就返回0

符合我之前说的 >0 <0 =0 的说法

再来看第二个类,Child 继承了Parent并且重写了compareTo方法,重写为,先输出一句,然后返回1 意思是无论跟谁比,被比的都要比它小。并且他还有一个特点就是age=3

例如,Child c1 = new Child();

Child c2 = new Child();

c1compareTo(c2) // 这个结果不管c1 c2是什么情况,都应该认为c1>c2(因为compareTo返回是1,大于0)

反过来c2compareTo(c1) // c2>c1,因为调用的是c2的方法。

第三个类,考你的是treeSet。 这个数据结构是一个有序的数据结构,你所插入的数据,会自动的排序。 比如你先后插入 2,3,1,6,5,0 最终会有序的排位0,1,2,3,5,6。

而且,他不允许重复值,比如你先插入3,再插入3,那么里面只有一个3,第二个3是插不进去的。

其原理就是调用一个对象的compareTo方法(否则他怎么知道谁大谁小呢)

所以,我们先来比较一下3个被加入treeset的对象的大小情况。

1) setadd(new Parent(3));

2) setadd(new Child());

3) setadd(new Parent(4));

1)号放入的age是3,没任何问题

接着放2)号,将会调用2)号的compareTo方法。而2号之前解释过了,无论怎样他都要比被比较的大,结论是2)号比1)号大。所以2)号放在1)号的后面。

接着放3)号,这里调用的又是parent的compareTo方法,这里比较的就是age的值了,结论是4比3大。那么3)号大于2)号,接着3)号放在2)号的前面。也没问题。

所以最后会有3个对象放入,顺序就是插入的顺序。

(如果都是调用parent中的compareTo,将会出现1号和2号相同,因此2好差不进去,最终set里面只有两个对象。这就是这题的最终考点)

有任何疑问,欢迎提问,乐意解答,为了熊猫。

-------------------------2055追加--------

以上解释了最后size=3 也就是最后输出的那个3

而那四句字符串的输出来源是pearent中的compareTo,和child的compareTo方法。

setadd(new Parent(3)); // 因为之前没有值,所以调用父类的compareTo和null比较,输出method of parent。但是优化后的treeset,在第一个插入的时候不会调用compareTo方法,因为不用比较他也是最小的。所以有可能不会输出第一句。我的机子就不会输出第一句

setadd(new Child()); //这个child对象放入set的时候,里面已经有一个对象,会调用child的compareTo方法,因此会多加一句method of child

setadd(new Parent(4));//调用父类的compareTo方法与第二个插入的比较,输出method of parent,接着调用了compareTo与第一个插入的比较,所以插入第三个的时候比较了两次。输出了两次

答案由此得来。

用set实现,set不能有重复数据存在

import javautilSet;

import javautilTreeSet;

public class $ {

    public static void main(String[] args) {

        int[] arr = { 1, 3, 3, 5, 6 };

        Set<Integer> set = new TreeSet<Integer>();

        for (int i : arr) {

            setadd(i);

        }

        Systemoutprintln(set);

    }

}

以上就是关于java ceiling全部的内容,包括:java ceiling、请各位java高手帮帮小妹····先谢谢了、用java在一个数组里取值不能取到相同的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9394754.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存