Collections是操作集合的类,这个类不需要创建对象,内部提供的都是静态方法。
静态方法:
Collections.sort(list);//list 集合进行元素的自然顺序排序。
Collections.sort(list,new ComparatorByLen());//按指定的比较器方法排序。- package day17;
- import java.util.Comparator;
- public class myCompactor implements Comparator<String> {//定义比较器
- public int compare(String s1,String s2){
- if (s1.length()>s2.length())
- {
- return 1;
- }
- if(s1.length()<s2.length())
- {
- return -1;
- }
- return s1.compareTo(s2);
- }
- }
复制代码
- import java.util.*;
- public class collectionssortdemo {
- public static void main(String[] args) {
- List<String> li=new ArrayList<String>();
- li.add("a");
- li.add("aa");
- li.add("zz");
- li.add("aaaaa");
- // Collections.sort(li);//自然排序
-
- //Collections.sort(li, new myCompactor());//带比较器的方法
- System.out.println(li);
-
-
- }
复制代码 Collections.max(list); //返回 list 中字典顺序最大的元素。
int index = Collections.binarySearch(list,"zz");//二分查找,返回角标。
Collections.reverseOrder();//逆向反转排序。
Collections.shuffle(list);//随机对 list 中的元素进行位置的置换。
将非同步集合转成同步集合的方法:Collections 中的 XXX synchronizedXXX(XXX);
List synchronizedList(list);
Map synchronizedMap(map);
-------------------------------------------------------
Arrays:
用于操作数组对象的工具类,里面都是静态方法。
asList 方法:将数组转换成 list 集合。
List<String> list = Arrays.asList(arr);//将 arr 数组转成 list 集合
可以通过 list 集合中的方法来操作数组中的元素:isEmpty()、contains、indexOf、set;
注意(局限性) :数组是固定长度,不可以使用集合对象增加或者删除等,会改变数组长度的功能方法。比如
add、remove、clear。 (会报不支持操作异常 UnsupportedOperationException) ;
- package day17;
- import java.util.*;
- public class arraysdemo {
- public static void main(String[] args) {
- <blockquote>String[] arr={"1","3","2","5"};
复制代码 值得注意的是;如果数组中存储的引用数据类型,直接作为集合的元素可以直接用集合方法操作。
如果数组中存储的是基本数据类型,asList 会将数组实体作为集合元素存在。
集合变数组:用的是 Collection 接口中的方法:toArray();
如果给 toArray 传递的指定类型的数据长度小于了集合的 size,那么 toArray 方法,会自定再创建一个该
类型的数据,长度为集合的 size。
如果传递的指定的类型的数组的长度大于了集合的 size,那么 toArray 方法,就不会创建新数组,直接使
用该数组即可,并将集合中的元素存储到数组中,其他为存储元素的位置默认值 null。
所以,在传递指定类型数组时,最好的方式就是指定的长度和 size 相等的数组。将集合变成数组后有什么好处?限定了对集合中的元素进行增删操作,只要获取这些元素即可。
- package day17;
- import java.util.*;
- public class arraysdemo {
- public static void main(String[] args){
-
- List<String> li=new ArrayList<String>();
- li.add("a");
- li.add("aa");
- li.add("zz");
- li.add("aaaaa");
-
- String[] str=li.toArray(new String[5]);//toArray()传递的指定类型的数据长度大雨集合size那麽会用null填充
- for(String i:str){
- System.out.println(i);
- }
- }
- }
复制代码
API--- java.util.Math: 用于数学运算的工具类,属性和行为都是静态的。该类是 final 不允许继承。
static double ceil(double a) ; //返回大于指定数值的最小整数
static double floor(double a) ; //返回小于指定数值的最大整数
static long round(double a) ; //四舍五入成整数
static double pow(double a, double b) ; //a 的 b 次幂
static double random(); //返回 0~1 的伪随机数
public static void main(String[] args) {
Random r = new Random();
for(int x=0; x<10; x++) {
double d = Math.floor(Math.random()*10+1);//math.random只能获取0-1(不包括1的小数)
int d = (int)(Math.random()*10+1);//强制转型取0-10的整数
int d = r.nextInt(10)+1;//直接调用方法获得0-10的整数
System.out.println(d);
}
}
---------------------------------
Calendar日历类:- package day18;
- import java.util.Calendar;
- public class calendardemo {
- public static void printCalendar(Calendar c)//定义一个打印日期的方法
- {
-
- System.out.println(c.get(Calendar.YEAR));//获取年
- // System.out.println(c.get(Calendar.MONTH)+1);//月份加1
-
- String[] months={"1月","2月","2月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};//
- int index=c.get(Calendar.MONTH);
- System.out.println(months[index]);//查表法获取月份
- System.out.println(c.get(Calendar.DAY_OF_MONTH));
- String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
- int index1=c.get(Calendar.DAY_OF_WEEK);
- // System.out.println(index1);
- System.out.println(weeks[index1]);//查表法获取星期
- System.out.println(c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));
- }
-
-
- public static void main(String[] args) {
- Calendar c=Calendar.getInstance();
- printCalendar(c);
- /*练习一获取任意一年中2月的天数
复制代码
|
|