A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Collections是操作集合的类,这个类不需要创建对象,内部提供的都是静态方法。
静态方法:
Collections.sort(list);//list 集合进行元素的自然顺序排序。
Collections.sort(list,new ComparatorByLen());//按指定的比较器方法排序。
  1. package day17;

  2. import java.util.Comparator;

  3. public class myCompactor implements Comparator<String> {//定义比较器

  4.         public int compare(String s1,String s2){
  5.                 if (s1.length()>s2.length())
  6.                 {
  7.                         return 1;
  8.                 }
  9.                 if(s1.length()<s2.length())
  10.                 {
  11.                         return -1;
  12.                 }
  13.                 return s1.compareTo(s2);
  14.         }
  15. }
复制代码

  1. import java.util.*;

  2. public class collectionssortdemo {

  3.         public static void main(String[] args) {
  4.                 List<String> li=new ArrayList<String>();
  5.                 li.add("a");
  6.                 li.add("aa");
  7.                 li.add("zz");
  8.                 li.add("aaaaa");
  9.   // Collections.sort(li);//自然排序
  10.    
  11.                 //Collections.sort(li, new myCompactor());//带比较器的方法
  12.       System.out.println(li);
  13.        
  14.        
  15.         }
复制代码
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) ;

  1. package day17;

  2. import java.util.*;

  3. public class arraysdemo {

  4.         public static void main(String[] args) {
  5. <blockquote>String[] arr={"1","3","2","5"};
复制代码
值得注意的是;如果数组中存储的引用数据类型,直接作为集合的元素可以直接用集合方法操作。
如果数组中存储的是基本数据类型,asList 会将数组实体作为集合元素存在。
     集合变数组:用的是 Collection 接口中的方法:toArray();
如果给 toArray 传递的指定类型的数据长度小于了集合的 size,那么 toArray 方法,会自定再创建一个该
类型的数据,长度为集合的 size。
如果传递的指定的类型的数组的长度大于了集合的 size,那么 toArray 方法,就不会创建新数组,直接使
用该数组即可,并将集合中的元素存储到数组中,其他为存储元素的位置默认值 null。
所以,在传递指定类型数组时,最好的方式就是指定的长度和 size 相等的数组。将集合变成数组后有什么好处?限定了对集合中的元素进行增删操作,只要获取这些元素即可。

  1. package day17;

  2. import java.util.*;

  3. public class arraysdemo {

  4.         public static void main(String[] args){
  5.                
  6.                 List<String> li=new ArrayList<String>();
  7.                 li.add("a");
  8.                 li.add("aa");
  9.                 li.add("zz");
  10.                 li.add("aaaaa");
  11.                
  12.                 String[] str=li.toArray(new String[5]);//toArray()传递的指定类型的数据长度大雨集合size那麽会用null填充
  13.                 for(String i:str){
  14.                         System.out.println(i);
  15.                 }
  16.         }

  17. }
复制代码

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日历类:
  1. package day18;

  2. import java.util.Calendar;



  3. public class calendardemo {

  4.         public static void printCalendar(Calendar c)//定义一个打印日期的方法
  5.         {
  6.                
  7.                    System.out.println(c.get(Calendar.YEAR));//获取年
  8.                 //        System.out.println(c.get(Calendar.MONTH)+1);//月份加1
  9.                        
  10.                 String[] months={"1月","2月","2月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};//
  11.                 int index=c.get(Calendar.MONTH);
  12.                 System.out.println(months[index]);//查表法获取月份
  13.                 System.out.println(c.get(Calendar.DAY_OF_MONTH));
  14.                 String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
  15.                 int index1=c.get(Calendar.DAY_OF_WEEK);
  16.                // System.out.println(index1);
  17.                 System.out.println(weeks[index1]);//查表法获取星期
  18.                 System.out.println(c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND));
  19.         }
  20.        
  21.        
  22.         public static void main(String[] args) {
  23.                 Calendar c=Calendar.getInstance();
  24.                 printCalendar(c);
  25.                 /*练习一获取任意一年中2月的天数
复制代码




1 个回复

倒序浏览
顶下   加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马