概要
提示:Android开发中有很多时候使用到集合,今天我们就来详细的了解一下Android开发中集合的种类
Collection接口
//返回这个集合是否为空
boolean isEmpty();
//添加一个单例到集合中
boolean add(E e);
//将指定集合中的所有元素都添加到当前集合中
boolean addAll(Collection<? extends E> c);
Collection集合遍历
迭代器
// 创建迭代器对象 Iterator ite = list.iterator();
next方法获取元素
public static void main(String[] args) {
// 创建String类型的集合
Collection<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
// 创建迭代器对象
Iterator ite = list.iterator();
// 通过next取出元素
System.out.println(ite.next()); // aaa
System.out.println(ite.next()); // bbb
System.out.println(ite.next()); // aaa
// System.out.println(ite.next()); // 注意不要越界, 越界则报错
}
hasNext方法会判断当前位置是否有元素, 我们可以使用hasNext方法作为While循环的条件, 实现自动遍历元素
public static void main(String[] args) {
// 创建String类型的集合
Collection<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
// 创建迭代器对象
Iterator ite = list.iterator();
// hasNext作为条件
while (ite.hasNext()) {
System.out.println(ite.next());
}
}
for循环遍历:
public static void main(String[] args) {
// 创建String类型的集合
Collection<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
// 创建int类型的数组
int[] arr = {10, 20, 80, 40};
// foreach遍历集合
for (String item : list) {
System.out.println(item);
}
// foreach遍历数组
for (int item : arr) {
System.out.println(item);
// item = 100; // 注意此处修改变量item的值不会影响数组的值, 该操作无意义
}
}
Lambda遍历
- 通过foreach方法遍历
public static void main(String[] args) {
// 创建String类型的集合
Collection<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
// 通过foreach方法遍历
list.forEach(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
}
- 通过foreach方法结合Lambda表达式进行遍历
public static void main(String[] args) {
// 创建String类型的集合
Collection<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
// foreach方法结合Lambda表达式
list.forEach(s -> System.out.println(s));
}
Collection和Collections的区别
java.util.Collection是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在java类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List和Set。
Collection接口的简单继承关系,如下图:
Collections则是集合类的一个工具类,其中提供了一系列静态方法,用于对集合中元素进行排序,搜索以及线程安全等各种操作。
1)排序(Sort)
Collections.sort(list)
举栗子:
List<Integer> list = new ArrayList<Integer>();
int array[] = {103,45,6,45,678};
for(int i = 0 ; i <array.length; i ++) {
list.add(array[i]);
}
Collections.sort(list);
for(int i = 0 ; i<array.length;i++){
System.out.println(list.get[i]);
}
输出结果: 6 45 45 103 678
使用方法2:Collection.sort(list,new MyComparator();
可以更加强大的定义自己的比较器,定义不同的字段,比如:比较不同品牌汽车的价格,销量,油耗等,可以直接使用此方法进行比较。具体的使用可以参考下这篇文章 Java中Collections详解
2)交换(Swap)
使用方法: Collections.swap()
举栗子:
List<Integer> list = new ArrayList<Integer>();
int array[] = {1,2,3,4,5,6,7,8};
for(int i = 0 ; i <array.length; i ++) {
list.add(array[i]);
}
Collections.swap(list,0,1);
参数解析
list-- 在该列表中的调剂元素。
i-- 要交换的一个元素的索引。
j-- 要交换的其它元素的索引。
for(int i =0; i<array.length;i++){
println(list.get[i]);
}
输出结果:2 1 3 4 5 6 7 8
3)反转(Reverse)
使用方法: Collections.reverse()
举栗子:
List<Integer> list = new ArrayList<Integer>();
int array[] = {1,2,3,4,5,6,7,8};
for(int i = 0 ; i <array.length; i ++) {
list.add(array[i]);
}
Collections.reverse(list);
for(int i =0; i<array.length;i++){
println(list.get[i]);
}
输出结果:8 7 6 5 4 3 2 1
4)混排(Shuffling)
使用方法: Collections.reverse()
List<Integer> list = new ArrayList<Integer>();
int array[] = {1,2,3,4,5,6,7,8};
for(int i = 0 ; i <array.length; i ++) {
list.add(array[i]);
}
Collections.reverse(list);
for(int i =0; i<array.length;i++){
println(list.get[i]);
}
5)替换所有的元素(Fill)
使用方法: Collections.fill()
List<Integer> list = new ArrayList<Integer>();
int array[] = {1,2,3,4,5,6,7,8};
for(int i = 0 ; i <array.length; i ++) {
list.add(array[i]);
}
Collections.fill(list,11);
for(int i =0; i<array.length;i++){
println(list.get[i]);
}
6)拷贝(Copy)
使用方法: Collections.copy()
List<Integer> list = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
int array[] = {1,2,3,4,5,6,7,8};
for(int i = 0 ; i <array.length; i ++) {
list.add(array[i]);
}
Collections.copy(list,list2);
for(int i =0; i<array.length;i++){
println(list2.get[i]);
}
7)返回Collections中最小的元素(min)
collections.min(list);
8)返回Collection中的最大元素(max)
collection.max(list);
9)lastIndexOfSubList
int count = Collection.lastIndexOfSubList(list,li);
10)IndexOfSubList
int count= Collections.indexOfSubList(list,li);
11)Rotate
Collections.rotate(list,-1);
小结
本篇文章主要讲解了Collection集合。相信通过上面的介绍大家应该对Collections有了详细的了解。