1. LinkedList 与 ArrayList的区别
LinkedList: 添加,删除元素比较快。
ArrayList: 添加,删除元素比较慢。通过索引查找比较快。
2.遍历集合时效率移除元素
一般会想到的方式是:
Iterator<Integer> itr = list.iterator(); while(itr.hasNext()) { // do something itr.remove(); }
可是这种方式效率会更高
for(Integer i: list) { list.remove(i); }
3.怎么将List转换成数组
最容易的是用Apache Commons lang的ArrayUtils工具类
int[] array = ArrayUtils.toPrimitive(list.toArray(new Integer[0]));
当然JDK中有 List.toArray(),但是这样会将List转换成Integer数组
正确的方式应该是:
int[] array = new int[list.size()]; for(int i=0; i < list.size(); i++) { array[i] = list.get(i); }
4.如何将int数组转换成List
最容易的仍然是用Apache Commons lang的ArrayUtils工具类
List list = Arrays.asList(ArrayUtils.toObject(array));
在JDK中没有直接了当的方法,只能
int[] array = {1,2,3,4,5}; List<Integer> list = new ArrayList<Integer>(); for(int i: array) { list.add(i); }
5.过滤数组比较好的方法
使用第三方工具包Guava,或者 Apache Commons Lang可以实现。使用afilter()方法(Collections2 in Guava或 CollectionUtils in Apache)
在Java8中使用Predicate可以实现,但是目前只能这样
Iterator<Integer> itr = list.iterator(); while(itr.hasNext()) { int i = itr.next(); if (i > 5) { // filter all ints bigger than 5 itr.remove(); } }
在第三方工具类中使用这种方式
public interface Predicate<T> { boolean test(T o); } public static <T> void filter(Collection<T> collection, Predicate<T> predicate) { if ((collection != null) && (predicate != null)) { Iterator<T> itr = collection.iterator(); while(itr.hasNext()) { T obj = itr.next(); if (!predicate.test(obj)) { itr.remove(); } } } }
然后这样用
filter(list, new Predicate<Integer>() { public boolean test(Integer i) { return i <= 5; } });
6.将List转换成Set的方式
Set<Integer> set = new HashSet<Integer>(list);
这种方式在大多数情况下是可行的。它将会根据hashcode剔除重复元素。如果要根据自定义的comparator来判断是否是唯一,可以用
Set<Integer> set = new TreeSet<Integer>(aComparator); set.addAll(list);
7.怎样从ArrayList中移除重复元素
ArrayList** list = ... // initial a list with duplicate elements Set<Integer> set = new HashSet<Integer>(list); list.clear(); list.addAll(set);
8.给集合排序
Collections.sort() 可排序List
PriorityQueue提供了有序的Queue,但是不能从中取任意的元素如PriorityQueue.get(4).
TreeSet也是如此,且元素是唯一的。与上一个一样不能取出任意元素
简而言之,Collections.sort()提供了一次性的排序方法。PriorityQueue 与TreeSet则维护着一个有序的集合。
9.创建一个新的集合
Collections.emptyList() vs new instance
(同样 emptyMap() 与 emptySet())
Collections.emptyList()返回的是不可变的空集合,任何调用者都会重用这一个实例(类似单例)
10.集合的Copy
常用的一种方式是:
ArrayList<Integer> dstList = new ArrayList<Integer>(srcList);
另一种方式是这样
ArrayList<Integer> dstList = new ArrayList<Integer>(srcList.size()); Collections.copy(dstList, srcList);
以上两种方式都是浅Copy,
当srcList与disList大小不同时,Collections.copy会抛出IndexOutOfBoundsException异常,
Collections.copy的接收参数是List, 而ArrayList构造方法的接收参数是Collection,更为通用一些
相关推荐
Java集合框架是一个包含多种数据结构(如列表、集、队列等)的API,这些数据结构由接口(如`Collection`、`List`、`Set`和`Queue`)和实现这些接口的类(如`ArrayList`、`HashSet`和`LinkedList`)组成。`Collection...
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
Collection接口是Java集合框架的顶级接口,它是所有单列集合(比如List、Set)的父接口。在本总结中,我们将深入探讨Collection接口以及其主要子接口和实现类,通过实例来帮助理解它们的特性和使用场景。 1. **...
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
本文将深入解析Java集合中的Collection、List、Set和Map,包括它们的使用方法、实现原理以及如何进行排序。 ### 集合框架概述 1.1.1 容器简介 容器是Java集合框架的基础,它是一个可以存储多个对象的容器,提供了...
根据给定的信息,本文将详细解析“Tedu一段Java集合Collection”的知识点,涵盖集合的基本概念、集合框架中的关键接口、`Collection`接口的核心方法、集合的遍历方式、泛型的应用以及集合与数组之间的相互转换。...
Java集合Collection、List、Set、Map使用详解
"Java集合Collection、List、Set、Map使用详解" Java集合是Java编程语言中最基本也是最重要的一部分。能够正确地使用集合类和理解集合的实现原理对于Java程序的开发具有无比的好处。本文将详细解释Java集合的实现...
Java集合框架是Java编程语言中一个非常重要的组成部分,它为数据存储和操作提供了丰富的接口和类。本篇文章将深入解析`Collection`接口及其主要实现类`List`和`Set`,帮助你理解并熟练运用这些核心概念。 首先,`...
Java集合collection详解[整理].pdf
Java集合框架是Java编程语言中的一个核心部分,它为数据存储和管理提供了高效且灵活的解决方案。本思维导图及总结旨在深入理解并掌握Java集合的相关概念和使用方法。 首先,我们来了解一下Java集合框架的基本构成。...
Java 集合框架的主要组件包括 Collection、List、Set、Map 等。 1.1 容器简介 容器是指可以存储对象的对象。 Java 集合框架中有多种类型的容器,每种容器都有其特点和用途。常见的容器有 Collection、List、Set、...
Java集合框架(Collection Framework)是Java编程语言中一个重要的组成部分,它为开发者提供了多种数据结构,以便更加高效、灵活地管理对象集合。Java集合框架主要包括三种类型的集合:List、Set和Map。此外,它还...
"Java集合总结之Collection整体框架"用到的图片
java中collection集合
在Java集合框架中,`Collection`是所有单值集合的父接口,它包含了`List`、`Set`等子接口。而`Iterable`接口是集合可迭代的标志,通过`iterator()`方法获取迭代器,遍历集合中的元素。`Map`接口则是用于存储键值对的...
Java 集合排序及java 集合类详解 Java 集合排序及java 集合类详解,Java...本教程详细解释了关于Java中的集合是如何实现的, 以及他们的实现原理等,涉及的部分内容:Collection , List ,Set , Map , 集合, 框架等。