Java集合
一、简介
List、Set、Map都是接口,List和Set继承至Collection接口,Map为独立接口
Connection接口:
-
List
有序,可重复ArrayList
-
优点:底层数据结构为数组,查询快,效率高
-
缺点:线程不安全,增删慢
Vector
- 优点:底层数据结构是数组,查询快,线程安全
- 缺点:增删慢,效率低
LinkedList
- 优点:底层数据结构是链表,增删快,效率高
- 缺点:线程不安全,查询慢
-
Set
无序,唯一-
HashSet
底层数据结构为哈希表(无序,唯一)
-
LinkedList
底层数据结构为链表和哈希表(有序,唯一)
-
TreeSet
底层数据结构为红黑树(有序,唯一)
-
Map接口:
-
HashMap
无序,线程不安全,效率高,父类是
Dictionary
,允许null
值 -
TreeMap
-
HashTable
线程安全,效率低,父类是
AbstractMap
,不允许null
值
二、实例
List
import java.util.ArrayList;
import java.util.List;
public class test {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.size(); //3
list.contains("bbb"); //ture
list.isEmpty(); //false
list.get(0); //aaa
list.remove("aaa");
list.clear(); //清空所有元素
}
}
Set
import java.util.HashSet;
import java.util.Set;
public class test {
public static void main(String[] args) {
Set<String> set=new HashSet<>();
set.add("aaa");
set.add("bbb");
set.add("ccc");
set.size(); //3
set.contains("bbb"); //ture
set.isEmpty(); //false
set.remove("aaa");
set.clear(); //清空所有元素
}
}
Map
import java.util.HashMap;
import java.util.Map;
public class test {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
map.put("aaa","abc");
map.put("bbb","abc");
map.put("ccc","abc");
map.isEmpty(); //false
map.size(); //3
map.containsKey("aaa"); //true
map.containsValue("abc"); //true
map.get("aaa"); //abc
map.remove("aaa");
map.clear(); //清空所有元素
}
}
三、注意事项
- 如果集合的类型想用基础数据类型(
int
,double
…),则必须使用包装类
import java.util.ArrayList;
import java.util.List;
public class test {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(1);
}
}
- 迭代器
Iterator
的用法
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
Iterator<String> it = list.iterator();
//两种遍历方式
while (it.hasNext()) {
String t = it.next();
System.out.println(t);
}
for (String t : list) {
System.out.println(t);
}
}
}