Java 集合框架工具类

发布于 2021-06-28 12:38:40 字数 4449 浏览 1278 评论 0

一、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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文