「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战」 程序有时会处理大整数,其取值超出了基本 整数类型的范畴 可以使用java.math包中的BigInteger类来处理, 该类可以提供任意精度的整数运算
BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚
理论上能够表示无线大的数,只要计算机内存足够大
BigInteger类的构造方法
public BigInteger(String s)如果s中包含非法字符,会发生NumberFormatException异常
public BigInteger add(BigInteger n)返回当前对象与n之和
public BigInteger subtract(BigInteger n)返回当前对象与n之差
public BigInteger multiply(BigInteger n)返回当前对象与n之积
public BigInteger divide(BigInteger n)返回当前对象与n之商
public BigInteger remainder(BigInteger n)返回当前对象与n的余数
public BigInteger abs()返回当前对象的绝对值
public BigInteger pow(int m)返回当前对象的m次幂
BigInteger类常用方法
public int compareTo(BigInteger n)
返回当前对象与n的比较结果,当前对象大于n时,返回1;小于n时,返回-1;相等时,返回0
public String toString()
返回当前对象的字符串表示
public String toString(int m)
返回当前对象的m进制字符串表示
TreeSet泛型类
1.TreeSet泛型类在java.util包中 2.TreeSet泛型类创建的对象称为树集
创建TreeSet泛型类对象
假设已经声明了学生类Student,可以创建学生树集
TreeSet tree=new TreeSet (); • tree可以存储Student对象的集合。
• tree可以调用 add(Student s) 将Student对象添加到树集中。
• TreeSet泛型类的其他常用方法,请自行 查阅Java API
以下源代码可以创建字符串树集,并且按照字典序升序输出
TreeSet<String> tree=new TreeSet<String>(); //tree调用add()方法依次添加多个字符串 tree.add("milk"); tree.add("coffee"); tree.add("apple"); tree.add("egg"); tree.add("noodle"); //使用Iterator<String>泛型类遍历tree Iterator<String> t=tree.iterator(); while(t.hasNext()) { String s=t.next(); System.out.println(s); }
TreeSet可以对set集合中的元素排序,底层数据结构是二叉树;
TreeSet保证元素唯一性的方式有两种:
第一种方式:需存入的元素自身具有比较性,元素可通过实现Comparable接口,复写compareTo(T o)方法;该方法中如果对象小于,等于或大于指定对象则分别返回负整数,零正整数,这种方式称为元素的自然顺序; Comparable< T>接口,用于对象内部比较方法,该接口下的实现方法格式为: int compareTo(T o);该方法需要传入一个参数,参数类型必须与接口上的类型保持一致;
附:String类中已经实现该接口并复写了该方法,故当传入的对象是String类时,元素将自动按字典顺序排序;
第二种方式:自定义比较器;当元素自身不具备比较性时,或者具备的比较性不是所需的,这时就需要让集合自身具备比较性,在集合初始化时,就有了比较方式;可以自定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数; 自定义比较器要实现Comparator接口,复写compare()方法; Comparator< T>接口,该接口下的compare方法格式为: int compare(T o1,T o2);该方法需要传入两个参数,参数类型与接口上的类型一致; 没有比较器传入时自动调用元素自身的比较方式,当两种方式都存在时,以比较器为主;
注:定义比较方法时,当主要条件相同时,一定要判断次要元素; 所有的自定义元素(对象)在复写比较方法时可以先通过instanceOf判断是否是同类元素;