Java 集合框架工具类
一、collections
collections:是集合框架的工具类,里面的方法都是静态的。
Collections 排序
public static void demo(){
List<String> list = new ArrayList<String>();
list.add("abcde");
list.add("cba");
list.add("aa");
list.add("zzz");
list.add("cba");
list.add("nbaa");
//对list集合进行指定顺序的排序
System.out.println(list);
Collections.sort(list);
System.out.println(list);
Collections.swap(list,i,j);
}
Collections 折半 & 最值
int index Collections.binarySearch(list,"aaa");
String max = Collections.max(list);
String max = Collections.max(list,new ComparatorByLength());
Collections 逆序 & 替换
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder());
TreeSet<String> ts = new TreeSet<String>(Collections.ComparatorByLength());
Collections.replaceAll(list,"cba","nba");
将非同步集合转成同步集合的方法
Collections.fill(list,"cc");
Collections.shuffle(list);
List list = new ArrayList();//非同步
list = MyCollections.synList(list);//返回一个同步的list
二、Arrays
Array:是集合框架的工具类,里面的方法都是静态的。
将数组转成集合
好处:可以使用集合点方法操作数组中的元素。
注意:数组的长度是固定的,所以对于集合的增删方法是不可以使用的否则会发生 UnsupportedOperationException
如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行集合存储。 如果数组中的元素是基本数值类型,那么会将该数组作为集合中的元素进行存储。
Arrays.asList(arr);
集合转成数组
使用的就是Collection接口中的toArray方法
集合转成数组:可以对集合中的元素操作的方法进行限定,不允许对齐进行增删。
List<String> list = new ArrayList<String>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
//toArray方法需要传入一个指定类型的数组。
//长度该如何定义呢??
//如果长度小于集合的size,那么该方法会创建一个同类型并和集合相同size的数组
//如果长度大于集合的size,那么该方法就会使用指定的数组,存储集合中的元素,其他位置默认为null
//所以建议,最后长度就指定为集合的size
String[] arr = list.toArray(new String[2]);
JDK 1.5 新特性 ForEach
foreach 语句,格式:for(类型 变量 :collection集合|数组){}
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
for(String s : list){
System.out.println(s);
}
int[] arr = {3,1,5,7,4};
for(int i : arr){
System.out.println(i);
}
}
传统 for 和高级 for 的区别?
传统 for 可以完成对语句执行很多次,因为可以定义控制循环的增量和条件 高级for是一种简化形式,它必须有被遍历的目标。该目标要么是数组,要么是Collection单列集合。
对数组的遍历如果仅仅只是获取数组中的元素,可以使用高级for。
如果要对数组的角标进行操作建议使用传统for。
可以使用高级 for 遍历 map 集合吗?
不能直接使用,但是可以将map转成单列的set就可以用了。
三、函数可变参数JDK1.5新特性
函数的可变参数,其实就是一个数组,但是接受的是数组的元素,自动将这些元素封装成数组。简化了调用者的书写。
public static void main(String[] args){
int sum = newAdd(5,1,4,7,3);
}
public static int newAdd(int... arr){
int sum = 0;
for(int i = 0;i<arr.length;i++){
sum+=arr[i];
}
return sum;
}
注意:可变参数类型,必须定义再参数列表的结尾。
四、静态导入-JDK 1.5 新特性
import java.util.Collections
Collections.sort(list);
修改如下:
import static java.util.Collections.sort; // 静态导入,其实导入的是类中的静态成员。
import static java.util.Collections.*; // 静态导入,其实导入的是类中的静态成员。
sort(list);
五、System 类
system 类中的方法和属性都是静态的。
常见方法:
long currentTimeMillis();//获取当前时间的毫秒值。
Properties prop = System.getProrerties();//获取系统的属性信息,并存储到Properties集合中。
Properties 集合中存储的都是 String 类型的键和值。最好使用他自己的存储和取出方法来完成元素的操作。
六、Runtime 类
Runtime 没有构造方法摘要,说明该类不可以创建对象 又发现还有非静态的方法,说明该类应该返回静态的返回该对象的方法。 而且只有一个,说明Runtime类使用了单列涉及模式。
Runtime r = Runtime.getRuntime();
r.exec("xxx.exe");//执行xxx.exe
七、Math 类
Math 提供了操作数学运算的方法,都是静态的。
ceil();向上取整(返回大于参数的最小整数)
floor();向下取整(返回小于参数的最大整数)
round();四舍五入
pow(a,b);a的b次方
八、Date 类
Date date = new Date(); // 将当前日期时间封装成Date对象
Date date2 = new Date(13356712306711); // 将指定毫秒值封装成Date对象
日期和毫秒值之间的转换
毫秒值 -> 日期对象
1、通过Date对象的构造方法 new Date(timeMillis)
2、还可以通过 setTime 设置(因为可以通过 Date 对象的方法对该日期中的各个字段(年月日)进行操作)
日期对象 -> 毫秒值
1、getTime 方法(因为可以通过具体的数值进行运算)
对日期对象格式化
Date date = new Date();
// 获取日期格式对象,具体的默认的风格
DateFormat dateFormat = DateFormat.getDateInstance();
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat dateFormat = DateFormat.getDateTimeInstance();
String str_date = dateFormat.format(date);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论