java-16(4)-工具类

1.工具类,是对集合和数组功能的补充。

工具类有两种
Collections是集合框架工具类,里面的方法是静态的。
Arrays是数组工具类,里面的方法是静态的。

2.Collections常用的方法

Collections:
    排序:
        sort();
        sort(list,Comparator);
    交换值:
        swap(list,i,j);
    折半查找:
        binarySearch(list,key);
    获取最大值:
        max();
        max(list,Comparator);通过不同的比较器,获取最大值。
    替换:
        repalceAll(list,Old,New);指定替换
        fill(list,new);全部替换
    排列:
        shuffle(list);随机排列
    逆转顺序:
        Comparator<T> reverseOrder();
        Comparator<T> reverseOrder(Comparator<T> cmp)

2.2 Arrays常用方法

Arrays里面最重要的一个方法是
public static <T> List<T> asList(T... a)

好处:可以使用集合的方法操作数组元素。
注意:数组的长度是固定的,所以对于集合增删方法是不可以使用的,否则会放生异常。
可以实现数组转集合;
如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行存储。
如果数组中的对象是基本数据类型,那么会将该数组作为集合中的元素进行存储。

集合转数组,使用的是Collections中的toArray方法。
集合转数组可以对集合中的元素操作的方法进行限定,不允许对其增删。

3.给非同步的集合加锁原理

List list = new ArrayList();//非同步

list = MyCollections.synList(list);//返回了一个同步的list

//给非同步的集合加锁
class MyCollection{
    public static List synList(List list){
        return new MyList(list);
    }
    //私有内部类
    private class MyList implements List{
        private List list;
        private static final Object lock = new Object();

        MyList(List list){
            this.list = list;
        }
        public boolean add(Object obj){
            synchronized(lock){
                return list.add(obj);
            }
        }
        public boolean remove(Object obj){
            synchronized(lock){
                return list.remove(obj);
            }
        .....
    }

} 

4 foreach
foreach语句;

   * 格式;
   * for(类型 变量:Collection集合|数组)
   *
   *
   * 传统for和高级for的区别
   * 传统for可以完成对语句执行很多次,因为可以定义控制循环的增量和条件。
   *
   * 高级for是一种简化形式。
   * 它必须有遍历的目标。该目标要么是数组,要么是Collection单列集合。
   * 对数组的遍历如果仅仅是为了获取数组中的元素,可以使用高级for。
   * 如果要对数组的角标进行操作建议使用传统for。
   *
   *可以使用高级for遍历map集合么?
   *不可以直接使用,高级for只能遍历单列集合。但是,可以将map转成单列的set,就可以用了。
   *

5.函数的可变参数。

*函数的可变参数,其实就是一个数组,但是接受的是数组中的元素,自动将这些元素封装成了数组,简化了调用者的书写。
*
* 注意事项:
* 可变参数类型必须定义在参数列表的结尾处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值