目录 1.Collectors,Collection,Collections傻傻分不清楚 今天写一下 Collections,这是Java官方提供的针对集合类的工具类,也是在开发中的一把利刃,能帮我们解决很多开发中的问题,但是依然有很多人不会或者不了解其中的API,一起学习下。 这可能是初学者遇到的问题,三个都和collect相关的。其中的分别也很简单。 1.Collectors 主要是用在java stream 中,是用来最后处理stream的,比如 Collectors.toSet()。 2.Collection 是所有集合类的接口类,比如常用的Set,List,Map。 3.Collections 是Java官方的提供的工具类,今天重点来讲一下。 可以根据单词来记忆,Collectors 收集器。Collection 集合 。Collections 一堆集合操作。 static int binaryScarch ( List list,Object key) 使用二分法搜索指定对象在List集合中的索引,查找的 List集合中的元素必须是有序的 static Object max(Collection col) 返回给定集合中最大的元素 static Object min (Collection col) 返回给定集合中最小的元素 static boolean replaccAll (List list,Object oldVal,Object newVal)用一个新的newVal替换List集合中所有的旧值oldVal 返回类型检查的集合,在对类型进行set 或者add的时候会做类型检查 用法: 源码解析: 这一组的函数可以在开发中多用,尽量避免因为不小心或者因为多人合作的原因出现一些异常。 这个操作有点骚,就是直接返回一个空集合,不能添加,不能删除,这个东西会有什么用呐? 用法: 这样用的好处就是1.不用处理返回null的问题。2.不用新生成空的list,避免占用内存,因为返回的空list,整个应用共同用一个。你发现他的好处了吗? 源码解析: 用法: 将传入的集合进行同步。解决线程同步问题。 源码: 这种方式相当于对集合进行了二次包装,在内部加了一把锁。 注意:这样的加锁方式会产生问题,如果是集合的单个操作是没有问题的,如果想同步集合状态下做一些非元操作是有问题的。还是要使用synchronize(list),小心使得万年船。 用法:传入的集合返回后不可以改变。 源码: 传入的集合不可以改变。因为包装类屏蔽了集合的方法,抛出了异常。 注意:只是不可以修改list的内容,但是可以修改list内元素的内容。比如下面: Collections 支持单个元素的除集合外提供的泛型操作。 如果你想同步集合,请用synchronizedxxx 。 如果你不想修改集合,请用unmodifiableXxx 。 如果你想使用空集合,请用emptyXxx。 如果你想保持集合纯净,请用 checkedxxx 。 刚开始学舞剑可能会伤到自己,但是你不学你永远不会用剑。技术没什么难的,难的是就怕你不知道。 原创不易,求,点个在看,关注,素质三连,谢谢支持。
1.Collectors,Collection,Collections傻傻分不清楚
2.Collections中API的分类
2.1 排序操作
static <T>boolean addAIl(Collection <? super T>c,T... elements) 将所有指定元素添加到指定的collection中 static void reverse(List list) 反转指定List集合中元素的顺序 static void shuffle(List list) 对List集合中的元素进行随机排序(模拟玩扑克中的“洗牌”) static void sort(List list) 根据元素的自然顺序对List集合中的元素进行排序 static void swap(List list,int i,int j) 将指定List集合中i处元素和j处元素进行交换 以上都比较简单,在用的时候看一下就会明白。
2.2 查找替换
2.3 checkedxxx 检查集合
ArrayList list = Lists.newArrayList(); list.add(new Player("香菜")); // 返回的safeList 在add时会进行类型检查 List safeList = Collections.checkedList(list, Player.class); //此时会对类型进行检查,不是Player类型,抛出异常 java.lang.ClassCastException: safeList.add("xxx");
public void add(E e) { i.add(typeCheck(e)); } E typeCheck(Object o) { if (o != null && !type.isInstance(o)) throw new ClassCastException(badElementMsg(o)); return (E) o; }
2.4 emptyxxx 返回空的集合
/** * 查询 和我同公会的好友 */ public List<Player> getSameUnionFriend(int roleId,int uid){ // 如果当前玩家没有工会,直接返回空list if (uid == 0){ return Collections.emptyList(); } // todo .... }
public static final List EMPTY_LIST = new EmptyList<>();
2.5 synchronizedxxx 同步集合
ArrayList<Player> list = Lists.newArrayList(); // TODO;----- List<Player> synList = Collections.synchronizedList(list);
final Object mutex; // Object on which to synchronize public void add(int index, E element) { synchronized (mutex) {list.add(index, element);} }
2.6 unmodifiableXxx 不可变集合
ArrayList<Player> list = Lists.newArrayList(); // TODO;----- List<Player> synList = Collections.unmodifiableList(list);
public E set(int index, E element) { throw new UnsupportedOperationException(); } public void add(int index, E element) { throw new UnsupportedOperationException(); } public E remove(int index) { throw new UnsupportedOperationException(); }
ArrayList<Player> list = Lists.newArrayList(); list.add(new Player("香菜聊游戏")); List<Player> synList = Collections.unmodifiableList(list); Player player = synList.get(0); player.setName("香菜");
3.总结:
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算