Arrays工具类:
操作数组的工具类
工具类汇总的方法基本都是静态的
**Arrays.toString(arr):把数组中的内容转成字符串
**Arrays.asList(arr):数组转集合
数组转成的集合不能进行添加和删除
因为数组的长度是固定的
数组只能存储对象
**list.size():集合元素个数
**list.add():添加
**list.remove():移除
/**
*
* 为什么要数组转集合?
*
* 集合的方法多:
* 迭代:
* Iterator<String> ite = list.iterator();
* while(ite.hasNext())
* {
* System.out.println(ite.next());
* }
* 判断数组是否包含某个元素:
* list.contains(str);
*
**/
/**
* int [] arr = {1, 2, 3};
* List list = Aarrays.asList(arr);
* System.out.print(list.size());
*
* 为什么list长度为1?
*
* 数组只能存储对象arr是个int数组
* 集合存储的是引用类型的对象
* 因为数组是引用类型的
* asList将arr整体作为一个对象存入集合
* 所以长度为1
*
**/
Collections工具类:
操作集合的工具类
**Collections.sort():排序
按照集合中对象所属的类自身具备的比较方式进行排序的
即int compareTo()方法
按照自定义的比较方式对集合中的对象进行拍苏
实现Comparator<String>接口
重写compare方法
传入实现接口的类的对象
**Collections.reverseOrder():翻转输出结果
没有参数则翻转默认的比较方式
/**
*
* 如何得到和比较值相反的比较方式?
*
* Comparator com = Collections.reverseOrder(new ComByLength());
* Collections.sort(list, com);
*
* System.out.println(list);
*
**/
**Collections.max(list):求最值
/**
*
* 自己实现max?
*
* public static <E extends Compare<? super E>> getMax(Clooection<? extends E> col)
* {
* Iterator<? extends E> ite = col.iterator();
* E obj = ite.next();//得到集合中的一个对象
*
* while(ite.hasNext())
* {
* E object = ite.next();
* int num = obj.compareTo(object);
* if(num < 0)
* obj = object;
* }
* return obj;
* }
*
**/
**Collections.toArray(T[] a):集合转数组
给定的数组长度大于集合中对象的个数,则使用给定的数组
给定的数组长度小于集合中对象的个数,会创建一个新的数组织,数组长度和集合对象个数相同
给定的数组长度和集合中对象个数相同
集合转数组可以防止数据被随意的添加或删除,因为数组长度是固定的
增强for()循环:
for(数据类型 变量名; 被遍历的数组或Collection集合)
{
}
int[] arr = {12,34,5,67,7,8};
for(int num:arr)//foreach
{
System.out.println(num + " ");
}
内部执行:
每次从数组arr中获得一个元素,存入到num中
List<String> list = new ArrayList<>();
list.add("adfd");
list.add("java");
for(String str:list)
{
System.out.println(str.toUpperCase() + " ");
}
HashMap<String, String> map = new HashMap<>();
map.put("001", "aaa");
map.put("002", "bbb");
for(String key: map.keySet())
{
String value = map.get(key);
System.out.println(key + "= " + value);
}
或:
for(Map.entry<String, String> en: map.entrySet())
{
String key = en.getKey();
String value = map.getValue();
System.out.println(key + "= " + value);
}
可变参数:
简化书写
可变参数必须写在参数列表的最后
对应过前面固定的参数后,剩下的参数都存入可变参数
求和:
//其实把接收的数存到数组中
public static int add(int... a)
{
int sum = 0;
for(int i = 0;i < a.length; i ++)
{
sum = sum + a[i];
}
return sum;
}
调用:
int sum = add(1,2,3,4,4);
System.out.println(sum);
静态导入:
import static java.util.Arrays.*;
将Arrays的静态方法导入进来
使用的时候就可以略去类名,直接使用sort()
当方法名相同时,类名不可以省略
当类名相同时,包名不可以省
**Arrays.sort(arr):排序
**Arrays.binarySearch(arr, 21):二分查找
runtime:
运行时
每个Java运行程序都有一个Runtime类实例,可以获得运行时信息
应用程序不能自己创建运行时对象,必须通过方法返回
**getRuntime():返回当前应用程序的运行时对象
**maxMemory():返回运行时的最大内存
**gc():垃圾回收器