目录
一.集合
- 集合类存放于java.util包中。
- 集合主要分为Collection和Map两个接口
- 集合类型主要有3种:set(集)、list(列表)和map(映射)。
- 集合存放的都是对象的引用,而非对象本身。
总的来说,集合就是一个存放数据对象引用的容器。
二.集合与数组的区别
- 数组能存放基本数据类型和对象,而集合类存放的都是对象的引用,而非对象本身。
- 数组容易固定无法动态改变,集合类容量动态改变。
- 数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数
- 集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式
- 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,大大提高了软件的开发效率
三.List集合
List<E>集合是一个有序列表,允许存放重复元素,其上层接口为Collection<E>,E为元素的类型。
List实现类有
- LinkedList:双向循环链表,可以实现栈、队列和双向队列的功能,存储单元可以不连续。双向循环链表的查询效率低但是增删效率高。
- ArrayList:底层是Object数组,所以ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点。容量动态增长,在不使用<>限定的情况下可以存储任意元素,非线程安全
- Vector:向量类,容量动态增长,线程安全。与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多。因此在考虑并发的情况下使用Vector,保证线程安全,不考虑并发时使用ArrayList。
以下对LinkedList、ArrayList和Vector简单方法做一个总结,其全都是不带具体指向类型<>,如字符串类型:List<String> list = new LinkedList<String>(); 。
LinkedList
import java.util.*;
public class Main {
public static void main(String[] args) {
//创建LinkedList集合
LinkedList list = new LinkedList();
//元素添加
list.add(12);
list.add('s');
list.add("ad");
//尾插
list.addLast(45);
//头插
list.addFirst(84);
System.out.println(list);
//集合大小
int len = list.size();
System.out.println(len);
//修改某一元素值
list.set(2,"adfad");
System.out.println(list);
//获取元素
System.out.println(list.get(2));
//移除元素,根据下标移除
list.remove(3);
//获取元素下标,不存在则返回-1
System.out.println(list.indexOf(12));
//清空list
list.clear();
System.out.println(list);
}
}
//结果
/*
[84, 12, s, ad, 45]
5
[84, 12, adfad, ad, 45]
adfad
1
[]
*/
ArrayList
import java.util.*;
public class Main {
public static void main(String[] args) {
//创建ArrayList集合
ArrayList arrayList = new ArrayList();
//添加元素
arrayList.add(12);
arrayList.add('a');
arrayList.add("dfd");
arrayList.add(12);
System.out.println(arrayList);
//集合大小
System.out.println(arrayList.size());
//根据下标获取元素
System.out.println(arrayList.get(3));
//替换,下标、值
arrayList.set(2,"abcdefg");
//移除
arrayList.remove(1);
System.out.println(arrayList);
//获取第一个值为指定值得元素的,没有则返回-1
System.out.println(arrayList.indexOf(12));
//清空
arrayList.clear();
System.out.println(arrayList);
}
}
//结果
/*
[12, a, dfd, 12]
4
12
[12, abcdefg, 12]
0
[]
*/
Vector
import java.util.*;
public class Main {
public static void main(String[] args) {
//创建
Vector vector = new Vector();
//添加
vector.add(12);
vector.add('s');
vector.add("ad");
System.out.println(vector);
//大小
System.out.println(vector.size());
//根据下标获取元素
System.out.println(vector.get(2));
//替换
vector.set(1,"adfadfa");
System.out.println(vector);
//删除
vector.remove(2);
System.out.println(vector);
//清空
vector.clear();
System.out.println(vector);
}
}
//结果
/*
[12, s, ad]
3
ad
[12, adfadfa, ad]
[12, adfadfa]
[]
*/
好吧,最后确定这三者基本的add(),get(),remove(),set(),size(),clear()这些基本函数都是一样的,都是继承自其父类的,我应该是多此一举了,但是不想删除上面那些代码了,以后有什么其他的发现或者用到了他们其他的内容再进行添加。