Java集合框架(四)

01.集合框架工具类(Collections-sort)

 

public static <T extends Comparable<? super T>> void sort(List<T> list)

{

      

}

Collections.sort(List<T> list);:把List集合按自然顺序排序。

Collections.sort(List<T> list,Comparator<? super T> com);:按比较器进行排序。

比较器定义:

class ComparatorDemo implements Comparator<T>

{

       //覆盖

       public int compare(T t1,T t2)

       {

             

       }

}

 

02.集合框架工具类(Collections-Max)

 

04.集合框架工具类(Collections-binarySearch)

 

Collections.binarySearch(List<T> list,T Key)

{

      

}

返回key在list中的角标。

 

05.集合框架类(Collections-替换反转)

 

Collections.fill(List<T> list,T Key)

将list集合中的所有元素替换成指定元素。

 

练习:将集合中的部分元素替换成指定元素

 

replaceAll(List<T>,T oldValue,T newValue);

使用另一个值替换表中出现的某一指定值。

reverse(List<T>):将list中的元素反转。

 

05.集合框架工具类(Collections-reverseOrder)

 

TreeSet<String> ts=new TreeSet<String>(Collections.reverseOrder());

 

Collections.reverseOrder():按自然顺序强行逆转排序。

Collections.reverseOrder(现有比较器):按现有比较器强行逆转排序

 

06.集合框架工具类(Collections-SynList)

 

synchronizedSet(Set<T> set)

synchronizedList(List<T> list)

swap(List<T> list,int i,int j):直接交换list集合中指定位置的元素

 

07.集合框架工具类(Arrays)

 

Arrays:用于操作数组的工具类,里面都是静态方法。

asLsit():将数组变成List集合。

为什么把数组变成List集合:可以使用集合的思想和方法来操作数组中的元素。

注意:将数组变成集合,不可以使用集合的增删方法。

如果增删了,那么会发生不支持操作异常。UnsupportedOperationException。

若果数组中的元素都是对象,变成集合时,数组中的元素就直接转成集合中的元素。

如果数组中的元素,都是基本数据类型,会将该数组作为集合中的元素存在。

 

08.集合框架工具类(集合变数组)

 

Collection接口中的toArray方法。

 

1.指定类型的数组到底要定义多长呢?当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的siae。

当指定类型的数组长度大于了集合的size,就不会创建数组,而是使用传递进来的数组。

所以创建一个刚刚好的数组最优。

为什么要将集合变数组?

其实是为了限定对元素的操作不需要进行增删了。

 

09.集合框架工具类(增强for循环)

 

高级for循环

格式:

for(数据类型 变量名:被遍历的集合或数组)

{

      

}

ArrayList(String) al=new ArrayList<String>();

for(String s:al)

{

      

}

 

这个循环是有局限性的,只能取出,不能修改或移除。

 

对集合进行遍历只能获取,但是不能对集合进行操作。

迭代器除了遍历,还可以进行remove集合中元素的动作。

如果使用listIterator。还可以在遍历中对集合进行增删改查的动作。

 

传统for循环和高级for有什么区别?

高级for有一个局限性,必须有被遍历的目标。

在遍历数组的时候还是希望使用传统for,因为传统for有角标。

凡是支持迭代器的集合都支持高级for循环。

 

10.集合(可变参数)

 

jdk1.5版本之后出现的新特性:

public static void show(int... arr)

{

      

}

可变参数其实就是上一种数组参数的简写形式,不用手动的建立数组对象,只要将要操作的元素作为参数传递即可。隐式将这些参数封装成了数组。

在使用可变参数新特性的时候注意:

可变参数一定要定义在参数列表的最后面。

 

11.静态导入

 

import static java.util.Arrays.*;//导入的Arrays这个类中的所有静态成员。

import static java.lang.System.*;//导入System类中所有的静态成员。

当类名重名时,需要指定具体的类名;

当方法重名时,指定具备所属的对象或者类。

 

12.其他对象(System)

 

System:类中的方法都是静态方法。

in:

out:

描述系统一些信息。

获取系统属性信息:Properties getProperties();

因为Properties是Hashtable的子类,也就是Map集合中的一个子类对象,那么可以通过Map的方法取出该集合中的元素。

该集合中存储的都是字符串,没有泛型定义。

Properties prop=System.getProperties();

//获取所有属性信息

for(Object obj:prop.keySet())

{

       String value=(String)prop.get(obj);

       System.out.println(obj+"..."+value);

}

//获取指定属性信息

String value=System.getProperties("os.name");

System.out.println(value);

如何在系统中自定义一些特有信息呢?

System.setProperties("myKey","MyValue");

 

13.其他对象(Runtime)

 

Runtime对象:

该类并没有提供构造函数,说明不可以new对象,那么会直接想到该类中的方法都是静态的,但发现该类中还有非静态方法。

说明该类肯定会提供了方法获取本类对象,而且该方法是静态的并且返回值类型是该类类型。

有这个特点可以看出该类使用了单例设计模式完成。

该方式是static Runtime getRuntime();

 

14.其他对象(Date)

 

Date类也是工具类,在java.util.*;包里。

要想把日期对象转换成我所要的文本,需要以下类:

SimpleDateFormat。该类在java.text.*;包里,是Date的子类。

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");

String date=sdf.format(sdf);

 

15.其他对象(Calendar)

 

Calendar c=Calendar.getInstance();

c.get(Calendar.YEAR);//获取年份。

由于获取的年月日等都是数字,为了转换成大写的一二三,可以使用查表法。

如果要用查表法获取大写的星期,要把星期日放在第一位。

c.set(2012,3.23);//把日期设置成为2012年3月23日

c.add(Calendar.YEAR,4);//把当前时间加四年,如果第二个参数是负数,就是把当前时间减几年。第一个参数的字段可以改变,如:MONTH等。

 

练习:

1.获取任意年的二月有多少天?

思路:

根据指定年设置一个时间就是c.get(year,2,1)//某一年的三月一日;c.get(Calendar.DAY_OF_MONTH,-1)//三月一日,往前推一天,就是二月最后一天。

2.获取昨天现在这个时刻?

c.get(Calendar.DAY_OF_MONTH,-1)//今天减一天就是昨天这个时刻。

 

16.其他对象(Math-Random)

 

Math是一个数学工具类,在java.util包里。里面的方法都是静态方法。

double d=Math.ceil(-16.34);//ceil方法返回大于指定数据的最小整数。

Math.floor();//返回小于这个数的最大整数。返回类型是Double。

Math.round();//返回类型是long,四舍五入。

Math.pow(2,3);//返回的是2的三次方。

 

Math中的一个重点方法:

随机数Random

Math.random();//返回的是0到1之间包含0不包含1的随机数。

Random r=new Random();

r.nextInt(10)+1;//返回的是1到10之间的随机整数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值