南通免费建设网站,婺源做网站,技校软件开发专业,wordpress更改静态1. Java工具概述
很多人初学程序时#xff0c;总是在想#xff0c;那么多的算法该怎么写呀#xff1f;那么多的数据结构都不熟悉#xff0c;该怎么实现呀#xff1f;总是担心英语不好程序学不精通#xff0c;数学不好写程序无法达到巅峰。学的程序越多#xff0c;不懂的…1. Java工具概述
很多人初学程序时总是在想那么多的算法该怎么写呀那么多的数据结构都不熟悉该怎么实现呀总是担心英语不好程序学不精通数学不好写程序无法达到巅峰。学的程序越多不懂的知识越多。这种想法很正常毕竟传统的计算机教育都是从原理开始的科学原理一般理解起来还能够接受但是实现起来都很难。计算机发展到了今天能成为原理的基本已经有人实现了今天我们学习任何知识都是站在巨人的肩膀上只要理解程序运行原理算法的功能即可。底层的各种算法各种数据结构已经被“巨人们”实现了一般都放在程序开发类库中程序员开发过程中直接调用即可。比如现在木工做家具已经不存在自己砍树、加工木板、一点一点的雕刻了如果需要木板直接到市场上购买需要各种图案直接到市场购买木工的工作就是把这些木板修理一下组装成一套家具即可。“工欲善其事必先利其器”在Java程序开发过程中很多算法比如MD5加密算法、很多数据结构比如链表LinkedList已经实现并且大多放在类库的java.util包中程序员只需要了解各种工具的功能就可以直接调用。比如对一个数组进行排序程序员可以写如下排序算法代码演示数组排序
public static void sort(int[] arrs) {boolean isSwap false;for (int i 0; i arrs.length - 1; i) {isSwap false;for (int j arrs.length - 1; j i; j--) {if (arrs[j - 1] arrs[j]) {isSwap true;int tmp arrs[j - 1];arrs[j - 1] arrs[j];arrs[j] tmp;}} }
}该排序算法中只能对整数数组排序还有其他数据类型呢就需要重载很多方法进行排序操作。而在Java类库中有一个Arrays类的sort方法已经实现各种数据类型的排序算法。程序员只需要调用该类的方法即可。代码演示Arrays实现排序
public static void main(String[] args) {int[] ages{23, 45,12,76,34,56,24};Arrays.sort(ages);for (int i 0; i ages.length; i) {System.out.println(ages[i]);}
}在Java开发类库中提供了很多工具类我们即将学习最常见的工具类比如对日期的操作对集合的操作等。具体更多的工具类请参考JavaDoc文档。2. java.util.Date类
Date类包装了毫秒值毫秒值表示自1970年1月1日00:00:00 GMT开始到现在经过的毫秒数。该类的大部分构造器和方法都已经过时但是该类使用非常方便因此目前使用还很普遍该类的另一个主要功能是在数据库操作中它允许将毫秒值表示为SQL DATE值是数据库操作中java.sql.Date的父类。关于数据库操作将在第八章开始讲解。该类目前推荐使用的构造方法有两个构造方法 说明
Date() 按照当前系统时间构造一个Date对象。
Date(long date) 按照给定的时间毫秒值构造一个 Date 对象。
表1 java.util.Date类的构造方法主要的方法有返回 异常 说明
boolean after(Date when) 测试当前对象表示的时间是否在指定时间之后。
boolean before(Date when) 测试当前对象表示的时间是否在指定时间之前。
long getTime() 返回当前对象对应的时间毫秒值
void setTime(long time) 设置时间
表2 java.util.Date类的主要方法代码演示时间设置
public class Demo2 {public static void main(String[] args) {Date datenew Date(); ①date.setTime((10L*3652)*24*60*60*1000); ②System.out.println(date); ③}
}
代码解析
① 构造当前系统时间。
② 设置时间值为1970年后10年的时间的毫秒值10年间有2个闰年10年的天数是10*365210L表示当前值是long类型。
③ 调用Date的toString方法输出结果。代码输出结果
Tue Jan 01 08:00:00 CST 1980Q 老师时间毫秒值从1970年1月1日000.000开始计算上面示例中10年后应该是1980年1月1日000.000为什么输出结果是1980年1月1日 800呢
A java.util.Date类型表示的是GMT时间本身输出是国际化输出由于中国处于东八区时间因此输出结果是早上8点。而Date的其他构造方法和普通方法的API都不容易实现国际化因此目前Date类的大多数方法都被标识为过时表示更灵活的时间类请参考java.util.Calendar。Date的输出结果是按照国际通用格式输出的而中国更习惯于“年-月-日”的形式输出这种特殊格式的输出需要用到Java格式化工具。3. 格式化工具
格式化的目的是把一个对象以不同的格式表示以满足不同环境对格式的要求比如前面学习的Date对象实质是一个以毫秒值表示的时间但是在不同的国家和地区表示方式不一样。那么就需要对Date进行格式化处理。接下来主要学习Java对日期时间的格式化和对数字的格式化处理。 日期时间格式化Date类中包含了日期和时间在Java编程中日期通常指年、月、日时间则指时、分、秒、毫秒。Java对Date进行格式化使用java.text.DateFormat类。在格式表示中经常采用4种格式这四种格式被定义为DateFormat类的常量。下表所示格式 说明
SHORT 以最短的格式表示比如09-8-20
MEDIUM 比short完整表示方式比如2009-8-20
LONG 比medium更完整的表示方式比如2009年8月20日
FULL 综合的表示方式比如2009年8月20日 星期四
表3 DateFormat的四种表示格式因为不同国家地区需要格式化的结果不同Locale类的对象表示了不同的区域Locale定义目前全世界几乎所有地区的对象表示比如格式 说明
Locale.CHINA 中国地区
Locale.US 美国地区
Locale.FRANCE 法国地区
Locale.CANADA 加拿大地区
表4 Locale对部分地区的表示DateFormat是一个抽象类不能直接实例化可以使用下表中的静态方法得到DateFormat的对象。方法 说明
getDateInstance() 返回默认地区默认格式的关于日期的DateFormat对象。
getDateInstance(int) 返回指定格式下默认地区的关于日期的DateFormat对象。
getDateInstance(int, Locale) 返回指定格式指定地区的关于日期的DateFormat对象。
getTimeInstance() 返回默认地区默认格式的关于时间的DateFormat对象。
getTimeInstance (int) 返回默认地区指定格式的关于时间的DateFormat对象。
getTimeInstance (int, Locale) 返回指定地区指定格式的关于时间的DateFormat对象。
getDateTimeInstance() 返回默认地区、默认日期格式、默认时间格式的关于日期和时间的DateFormat对象。
getDateTimeInstance (int,int) 返回默认地区、指定日期格式、指定时间格式的关于日期和时间的DateFormat对象。
getDateTimeInstance (int,int, Locale) 返回指定地区、指定日期格式、指定时间格式的关于日期和时间的DateFormat对象。
表5 获取DateFormat对象的静态方法调用DateFormat对象的format方法可以把Date对象转换成为指定格式的String类型数据。比如Date todaynew Date();
DateFormat dfDateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA);
String resultdf.format(today);代码演示日期的不同格式
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;public class Demo3 {public static void main(String[] args) {Date today new Date();Locale[] locals new Locale[] { Locale.CHINA, Locale.US, Locale.UK };for (int i 0; i locals.length; i) {DateFormat df1 DateFormat.getDateInstance(DateFormat.SHORT,locals[i]);DateFormat df2 DateFormat.getDateInstance(DateFormat.MEDIUM,locals[i]);DateFormat df3 DateFormat.getDateInstance(DateFormat.LONG,locals[i]);DateFormat df4 DateFormat.getDateInstance(DateFormat.FULL,locals[i]);System.out.println(locals[i].getDisplayCountry() 的日期形式);System.out.println(\tShort格式 df1.format(today));System.out.println(\tMedium格式 df2.format(today));System.out.println(\tLong格式 df3.format(today));System.out.println(\tFull格式 df4.format(today));}}
}
代码输出结果
中国的日期形式Short格式09-8-20Medium格式2009-8-20Long格式2009年8月20日Full格式2009年8月20日 星期四
美国的日期形式Short格式8/20/09Medium格式Aug 20, 2009Long格式August 20, 2009Full格式Thursday, August 20, 2009
英国的日期形式Short格式20/08/09Medium格式20-Aug-2009Long格式20 August 2009Full格式20 August 2009在Java程序设计过程中对应日期和时间的格式化还有一个简单的格式化方式就是java.text.SimpleDateFormat该类中用字符串指定日期和时间的格式字符串中的字符称为模式字符模式字符区分大小写。常见的模式字符定义如下字母 日期或时间元素
y 年
M 年中的月份
w 年中的周数
W 月份中的周数
D 年中的天数
d 月份中的天数
F 月份中的星期
E 星期中的天数
a Am/pm 标记
H 一天中的小时数0-23
k 一天中的小时数1-24
K am/pm 中的小时数0-11
h am/pm 中的小时数1-12
m 小时中的分钟数
s 分钟中的秒数
S 毫秒数
表6 模式字符串例如日期和时间模式 结果
EEE, MMM d, yy Wed, Jul 4, 01
h:mm a 12:08 PM
yyyy-MM-dd HH:mm:ss 2009-8-20 14:22
yyyy年MM月dd HH:mm:ss 2009年8月20 14:22:23
表7 模式字符串示例SimpleDateFormat是DateFormat的子类用法和DateFormat类基本一致主要使用format()方法。代码演示SimpleDateFormat进行日期转换
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo4 {public static void main(String[] args) {Date today new Date();SimpleDateFormat format1 new SimpleDateFormat(yyyy-MM-dd);SimpleDateFormat format2 new SimpleDateFormat(yyyy年MM月dd HH:mm:ss);SimpleDateFormat format3 new SimpleDateFormat(HH:mm:ss);SimpleDateFormat format4 new SimpleDateFormat(yyyy);System.out.println(format1.format(today));System.out.println(format2.format(today));System.out.println(format3.format(today));System.out.println(format4.format(today));}
}
代码输出结果
2009-08-20
2009年08月20 14:25:58
14:25:58
2009在程序设计时界面上用户输入的基本上都是字符串如果字符串输入一个出生年月如何把该字符串转换成Date类型呢可以使用SimpleDateFormat的parse()方法。代码演示SimpleDateFormat解析日期
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Demo5 {public static void main(String[] args) {String birthday1980-04-16;SimpleDateFormat formatnew SimpleDateFormat(yyyy-MM-dd);try {Date birformat.parse(birthday);System.out.println(bir);} catch (ParseException e) { ①// TODO Auto-generated catch blocke.printStackTrace();}}
}
代码解析
① 用SimpleDateFormat解析日期的时候需要处理其中的ParseException异常。 数字格式化对数字的格式化在程序处理中也是非常常用的数字格式化主要对小数点位数表示的形式比如百分数表示等格式处理。NumberFormat 是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。若要格式化当前Locale的数值可使用其中一个方法
myString NumberFormat.getInstance().format(myNumber);若要格式化不同 Locale 的日期可在调用getInstance方法时指定它。NumberFormat nf NumberFormat.getInstance(Locale.FRENCH);方法 说明
getInstance() 获取常规数值格式。可以指定Local参数。
getNumberInstance() 获取常规数值格式。可以指定Local参数。
getIntegerInstance() 获取整数数值格式。可以指定Local参数。
getCurrencyInstance () 获取货币数值格式。可以指定Local参数。格式化后的数据前面会有一个货币符号比如“”
getPercentInstance() 获取显示百分比的格式。可以指定Local参数。比如小数 0.53 将显示为 53%。
表8 获取NumberFormat对象代码演示NumberFormat进行数字格式化
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
public class Demo6 {public static void main(String[] args) {double mynum1 230456789;double mynum2 0.23;NumberFormat nf1 NumberFormat.getInstance(Locale.CHINA);NumberFormat nf2 NumberFormat.getCurrencyInstance(Locale.CHINA);NumberFormat nf3 NumberFormat.getCurrencyInstance(Locale.US);NumberFormat nf4 NumberFormat.getPercentInstance();System.out.println(nf1.format(mynum1));System.out.println(nf2.format(mynum1));System.out.println(nf3.format(mynum1));System.out.println(nf4.format(mynum2));}
}
代码输出结果
230,456,789
230,456,789.00
$230,456,789.00
23%关于更复杂的数字格式化可以使用java.text.DecimalFormat进行处理该类通过模式字符串对数字格式化。代码演示DecimalFormat进行数字格式化
import java.text.DecimalFormat;
public class Demo7 {public static void main(String[] args) {int num11234567;double num20.126543; DecimalFormat df1new DecimalFormat(#,###); ①DecimalFormat df2new DecimalFormat(#.00); ②DecimalFormat df3new DecimalFormat(00.#); ③DecimalFormat df4new DecimalFormat(0.##E0); ④DecimalFormat df5new DecimalFormat(0.##%); ⑤ System.out.println(df1.format(num1));System.out.println(df2.format(num2));System.out.println(df3.format(num2));System.out.println(df4.format(num1));System.out.println(df5.format(num2));}
}
代码解析
① #代表一个位置数字如果该位置数字不存在则省略不显示。
,代表数字中的分隔符此示例用三位分隔一次。
② 0代表一个数字位置如果该位置不存在则用0来补充。小数中多余部分四舍五入。
.表示小数点。
#当前位置是0则省略不显示。
③ #小数部分只显示1位小数并且进行四舍五入。
④ E科学计数法。
⑤ %用百分数表示数字。代码输出结果
1,234,567
.13
00.1
1.23E6
12.65%4. java.util.Calendar
Calendar类是一个抽象类它为特定的值诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换和操作日历字段例如获得下星期的日期提供了丰富的方法。并且可以非常方便的与Date类型进行相互转换。使用静态方法getInstance()和getInstance(Locale locale)获取Calendar对象。Calendar定义了很多表示日期时间中各个部分的常量字段。返回值 字段 说明
static int AM 指示从午夜到中午之前这段时间的 AM_PM 字段值。
static int DATE get 和 set 的字段指示一个月中的某天。
static int DAY_OF_MONTH get 和 set 的字段指示一个月中的某天。
static int DAY_OF_WEEK get 和 set 的字段指示一个星期中的某天。
static int DAY_OF_YEAR get 和 set 的字段指示当前年中的天数。
static int HOUR get 和 set 的字段指示上午或下午的小时。
static int HOUR_OF_DAY get 和 set 的字段指示一天中的小时。
static int MINUTE get 和 set 的字段指示一小时中的分钟。
static int MONTH 指示月份的 get 和 set 的字段。
static int PM 指示从中午到午夜之前这段时间的 AM_PM 字段值。
static int SECOND get 和 set 的字段指示一分钟中的秒。
static int WEEK_OF_MONTH get 和 set 的字段指示当前月中的星期数。
static int WEEK_OF_YEAR get 和 set 的字段指示当前年中的星期数。
static int YEAR 表示年的 get 和 set 的字段。
表9 Calendar类中的日期字段Calendar类提供了丰富的操作方法可以单独对年、月、日、时、分、秒等字段单独读取也可以对星期设置常用方法如下返回 方法 说明
void add(int field, int amount) 根据日历的规则为给定的日历字段添加或减去指定的时间量。
boolean after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后返回判断结果。
boolean before(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前返回判断结果。
int get(int field) 返回给定日历字段的值。
int getActualMaximum(int field) 给定此 Calendar 的时间值返回指定日历字段可能拥有的最大值。
int getActualMinimum(int field) 给定此 Calendar 的时间值返回指定日历字段可能拥有的最小值。
Date getTime() 返回一个表示此 Calendar 时间值从历元至现在的毫秒偏移量的 Date 对象。
long getTimeInMillis() 返回此 Calendar 的时间值以毫秒为单位。
void set(int field, int value) 将给定的日历字段设置为给定值。
void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
void set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
void set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值。
表10 Calendar类常用方法代码演示Calendar的使用
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;public class Demo8 {public static void main(String[] args) {SimpleDateFormat sdf
new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);Calendar cale Calendar.getInstance();cale.set(2009, 8, 20);// 年月日同时设置 ①cale.set(Calendar.DAY_OF_WEEK, 2); ②Date date1 cale.getTime(); ③System.out.println(sdf.format(date1)); cale.set(Calendar.MONTH, 3); ④cale.set(Calendar.DAY_OF_MONTH, 28); ⑤cale.set(Calendar.YEAR, 1978); ⑥Date date2 cale.getTime();System.out.println(sdf.format(date2));}
}
代码解析
① 可以使用set方法对年月日时分秒同时设置。
② 把天定位到星期一Calendar中认为第一天是星期天设置2就是星期一。
③ Calendar类型转换为日期时间等价的Date类型。
④ 单独设置月。
⑤ 单独设置日。
⑥ 单独设置年。代码输出结果
2009-09-21 17:21:37
1978-04-28 17:21:37Q 老师为什么通过Calendar设置月与输出差1个月
A 不是差一个月而是在Calendar中对月份的计算是从0开始的因此设置月份11其实就是中国的十二月。5. Java对集合的操作
Java中学习了集合的操作比如排序、搜索等Java中用java.util.Arrays对数组操作使用java.util.Collections对集合框架中List操作。他们都是工具类类中的方法全部都是静态方法。 Arrays中的方法1. void Arrays.sort(T[])
对数组中的元素按照升序进行排序。T代表某一数据类型。代码演示binarySearch使用
public static void main(String[] args) {int[] arrsnew int[]{12,54,12,8765,123,34,54,23,67};Arrays.sort(arrs);for (int i : arrs) {System.out.print(i );}
}
代码输出结果12 12 23 34 54 54 67 123 8765 在sort方法中遇到对象数组的排序时要给对象提供排序的依据实现Comparator接口可以在接口的compare方法中指定排序规则实现Comparator接口的对象称为比较器。有一个Student类的数组现在按照年龄进行升序排序那么Comparator接口compare方法实现如下代码演示compare重新按年龄实现
class Student {String name;int age;public Student(String name, int age) {super();this.name name;this.age age;}public String toString() {return name , age;}
}class StuCom implements ComparatorStudent { ①public int compare(Student stu1, Student stu2) { ②if (stu1.age stu2.age) {return 1;} else if (stu1.age stu2.age) {return 0;} else {return -1;}}
}public static void main(String[] args) {Student[] stus new Student[] { new Student(小美, 21),new Student(阿聪, 22), new Student(武大郎, 28),new Student(阮小七, 26), new Student(晁盖, 30),new Student(鲁智深, 29), new Student(孙二娘, 26),new Student(扈三娘, 23), new Student(武松, 24) };Arrays.sort(stus, new StuCom());for (Student student : stus) {System.out.println(student);}
}
代码解析
① 定义一个比较器必须实现Comparator接口否则系统无法对一个对象数组进行搜索规则。
② 实现Comparator接口的compare方法对该方法中的两个参数进行比较就是制定了比较的规则。代码输出结果
小美,21
阿聪,22
扈三娘,23
武松,24
阮小七,26
孙二娘,26
武大郎,28
鲁智深,29
晁盖,302. List Arrays.asList(Object[] objs)把指定的数组转换为List的对象。
代码演示asList使用
import java.util.Arrays;
import java.util.List;public class Demo9 {public static void main(String[] args) {String[] strs{aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj};List listArrays.asList(strs);for (int i 0; i list.size(); i) {System.out.println(list.get(i));}}
}3. int Arrays.binarySearch(T[] objs, key)
在数组objs中查找key的位置返回key的下标如果查找不到key则返回负值。int Arrays.binarySearch(T[] objs,int fromIndex,int toIndex , key)
在数组objs中从fromIndex到toIndex位置上查找key返回key的下标如果查找不到返回一个负值。在binarySearch方法调用之前一定要保证数组已经是排序的如果没有排序可以使用Arrays.sort(T[]) 进行排序然后再进行查找。代码演示binarySearch使用
public static void main(String[] args) {String[] strs{aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj};Arrays.sort(strs);System.out.println(Arrays.binarySearch(strs, ccc));System.out.println(Arrays.binarySearch(strs, 4,8,ggg));System.out.println(Arrays.binarySearch(strs, 4,8,aaa));
}如果数组是一个自定义的对象数组那么搜索之前要先指定比较器。代码演示binarySearch搜索对象使用
class StuCom implements ComparatorStudent { ①public int compare(Student stu1, Student stu2) { if (stu1.age stu2.age) {return 1;} else if (stu1.age stu2.age stu1.name.equals(stu2.name)) {return 0;} else {return -1;}}
}public static void main(String[] args) {Student[] stus new Student[] { new Student(小美, 21),new Student(阿聪, 22), new Student(武大郎, 28),new Student(阮小七, 26), new Student(晁盖, 30),new Student(鲁智深, 29), new Student(孙二娘, 26),new Student(扈三娘, 23), new Student(武松, 24) };Student s new Student(晁盖, 30);System.out.println(Arrays.binarySearch(stus, s, new StuCom())); ②
}
代码解析
① 该比较器规定了要比较的类型就是Student类型因此这里使用泛型。
② 指定了对象数组对象和比较器的方法进行搜索。结果返回搜索到的对象在数组中的下标。除了上面介绍Arrays的方法外还有一些其它的方法方法 说明
T[] copyOf(T[] t,int length) 把一个数组赋值到长度是length的新数组中。T表示数据类型。
fill(T[] t,N newValue) 用一个固定值填充数组中所有元素。
表11 Arrays其他常用方法。 Collections类Collections类与Arrays类一样都提供了一系列的静态方法只是Arrays主要操作数组而Collections主要操作List集合同时还有对Set的相关操作。代码演示Collections操作
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Demo10 {static class Student implements Comparable { ①String name;int age;public Student(String name, int age) {super();this.name name;this.age age;}public String toString() {return name , age;}public int compareTo(Object o) { ②Student stu (Student) o;if (this.age stu.age) {return 1;} else if (this.age stu.age this.name.equals(stu.name)) {return 0;} else {return -1;}}}public static void main(String[] args) {ListStudent list new ArrayListStudent();Student[] stus new Student[] { new Student(小美, 21),new Student(阿聪, 22), new Student(武大郎, 28),new Student(阮小七, 26), new Student(晁盖, 30),new Student(鲁智深, 29), new Student(孙二娘, 26),new Student(扈三娘, 23), new Student(武松, 24) };Collections.addAll(list, stus); ③Collections.sort(list); ④for (Student student : stus) {System.out.println(student);}Student stu new Student(鲁智深, 29);int pos Collections.binarySearch(list, stu); ⑤System.out.println(pos);}
}
代码解析
① 在List中查找一个对象时该对象必须实现Comparable接口。
② compareTo方法中使用当前对象与参数对象进行比较。
③ 把一个数组对象复制到List对象中用方法Collections.addAll(……)方法
④ 对List集合中的元素按照自然顺序排序。
⑤ 二分法查找在List集合中查找Student对象要求Student对象必须实现Comparable接口。Collections的主要操作有1. int binarySearch(Listlt;? extends Comparablelt;? super T list, T key)
该方法是寻找T对象在List中匹配元素的位置。要求List集合中必须全部都是T对象T对象必须实现Comparable接口如果查找成功返回对象在List中的位置否则返回负数。该方法执行前首先要对List对象中的元素排序该方法还有一个重载方法是int binarySearch(Listlt;? extends T list, T key, Comparatorlt;? super T c)该方法也是查找T对象在List中的位置List集合中必须全部是T元素但是不要去T必须实现Comparable接口而是要求传入一个比较器。2. sort(ListT list)
对List中的元素按照自然排序。要按照用户自定义方式进行排序必须实现Comparator接口。sort (ListT list, Comparatorlt;? super T c) 根据指定比较器产生的顺序对指定列表进行排序。3. swap(Listlt;?gt; list, int i, int j)
在指定列表的指定位置处交换元素。4. reverse(Listlt;?gt; list)
反转指定列表中元素的顺序。在Collections中还有其他一些方法可以参考JavaDoc文档。6. java.lang.Math类
在java.lang.Math类中包含用于执行基本数学运算的方法如指数、对数、平方根和三角函数等。Math类中定义的所有方法和常量全部都是静态的使用非常方便。定义的常量主要有两个Math.E和Math.PI分别表示自然对数的底数和圆周率。Math类中主要的方法有返回 方法 说明
static T abs(T a) 返回 long 值的绝对值。
static double acos(double a) 返回一个值的反余弦返回的角度范围在 0.0 到 pi 之间。
static double atan(double a) 返回一个值的反正切返回的角度范围在 -pi/2 到 pi/2 之间。
static double ceil(double a) 返回最小的最接近负无穷大double 值该值大于等于参数并等于某个整数。
static double cos(double a) 返回角的三角余弦。
static double floor(double a) 返回最大的最接近正无穷大double 值该值小于等于参数并等于某个整数。
static double log(double a) 返回 double 值的自然对数底数是 e。
static double log10(double a) 返回 double 值的底数为 10 的对数。
static T max(T a, T b) 返回两个 double 值中较大的一个。
static T min(T a, T b) 返回两个 long 值中较小的一个。
static T pow(T a, T b) 返回第一个参数的第二个参数次幂的值。
static double random() 返回带正号的 double 值该值大于等于 0.0 且小于 1.0。
static int round(float a) 返回最接近参数的 int。
static double sin(double a) 返回角的三角正弦。
static double sqrt(double a) 返回正确舍入的 double 值的正平方根。
static double tan(double a) 返回角的三角正切。
表12 Math类中的常见静态方法转载于:https://www.cnblogs.com/jasonxcj/p/4925316.html