一、什么是集合?
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
二、为什么要集合?
然而在我们的开发实践中,经常需要保存一些变长的数据集合,于是,我们需要一些能够动态增长长度的容器来保存我们的数据。
三、集合与数组的区别?
(1)
数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
(2)JAVA
集合可以存储和操作数目不固定的一组数据。
(3)
若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库
四、集合的结构:
五、集合的三种类型:
①、List
01.ArrayList
数组结构:查询快,增删改慢
List<String> list=new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("A");
System.out.println("集合长度为:"+list.size());
for (String string : list) {
System.out.println(string);
}
输出结果为:
02.LinkedList(案例:贪吃蛇)
链表结构: 查询慢,增删改快
含有特殊的方法:
增加头addFirst(“”);增加尾addLast(""); 移除头removeFirst(“”);移除尾removeLast(“”);
LinkedList<String> list1=new LinkedList<String>();
list1.add("A");
list1.add("B");
list1.add("C");
list1.add("A");
list1.addFirst("第一");
list1.addLast("末尾");
list1.removeFirst();
for (String strings : list1) {
System.out.println(strings);
}
输出结果为:
03.Vector
增删改查慢 (目前已经被淘汰)
②、Set(案例:手机联系人)
01.HashSet
(可以加空值)
HashSet<String> hashSet=new HashSet<String>();
hashSet.add("A");
hashSet.add("S");
hashSet.add("C");
hashSet.add("B");
hashSet.add(null);
for (String string : hashSet) {
System.out.println(string);
}
输出结果为:
02.TreeSet
(不可加空值)
TreeSet<String> treeSet=new TreeSet<String>();
treeSet.add("a");
treeSet.add("c");
treeSet.add("d");
treeSet.add("b");
for (String string : treeSet) {
System.out.println(string);
}
输出结果为:
③、Map(键值对)
1.HashMap
(可以加空值)(无序)
2.HashTable
(不可加空值)(无序)
3.TreeMap
(可以加空值)(有序)
④.迭代Map(迭代==遍历)遍历的三种方式
Map<String, Object> map=new HashMap<String, Object>();
map.put("A","1");
map.put("B","2");
map.put("C","3");
map.put("D","4");
map.put("E","5");
4.1获取所有的键,在根据键拿到值
Set<String> str1=map.keySet();
for (String string : str1) {
System.out.println(string);
}
输出结果为:
4.2获取所有的值
Collection<Object> collection=map.values();
for (Object object : collection) {
System.out.println(object);
}
输出结果为:
4.3获取键和值(一个一个)
Set<Entry<String, Object>> se=map.entrySet();
for (Entry<String, Object> entry : se) {
System.out.println(entry);
}
输出结果为:
List和set对比:
Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。无序,有排序,不可重复。
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。有序,无排序,可重复。