首页 > 代码库 > Java集合框架
Java集合框架
Java集合框架
一. Collection接口
在集合框架中,集合(Collection)接口位于Set接口和List接口的最顶层,是Set接口和List接口的父接口。
List接口
List接口继承自Collection接口,他有如下特点:
1. List中的元素是有顺序的。
-
List通常允许重复元素。
-
List实现类通常支持null元素。
-
可以通过索引访问List对象容器中的元素。
ArrayList
ArrayList在概念上与数组相似,表示一组编入索引的元素,区别在于ArrayList没有预先确定的大小,其长度的可以按需增加。
以下是ArrayList 的方法摘要:
List list = new ArrayList();
-
boolean add(E e) 将指定的元素添加到此列表的尾部。
list.add("hello"); list.add(1);
-
void add(int index, E element) 将指定的元素插入此列表中的指定位置。
list.add(1, "world");
-
void clear() 移除此列表中的所有元素。
list.clear();
-
boolean contains(Object o) 如果此列表中包含指定的元素,则返回 true。
list.contains("hello");
-
E get(int index) 返回此列表中指定位置上的元素。
list.get(2);
-
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
list.indexOf("hello");
-
boolean isEmpty() 如果此列表中没有元素,则返回 true
System.out.println(list.isEmpty());
-
E remove(int index) 移除此列表中指定位置上的元素。
list.remove(2);
-
E set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。
list.set(1, "wode");
LinkedList
LinkedList 是实现了双向链表功能的列表,他将列表中每个对象放在独立的空间中,而且每个空间中还保存有和上一个和下一个连接的索引。
LinkedList list = new LinkedList();
-
boolean add(E e) 将指定元素添加到此列表的结尾。
list.add("hello"); list.add("world");
-
void add(int index, E element) 在此列表中指定的位置插入指定的元素。
list.add(2,"hah");
-
void clear() 从此列表中移除所有元素。
list.clear();
-
boolean contains(Object o) 如果此列表包含指定元素,则返回 true。
System.out.println(list.contains(0));
-
E get(int index) 返回此列表中指定位置处的元素。
list.get(1);
-
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回-1。
list.indexOf("hello");
-
E pop() 从此列表所表示的堆栈处弹出一个元素。
list.pop();
-
void push(E e) 将元素推入此列表所表示的堆栈。
list.push(3);
-
E remove(int index) 移除此列表中指定位置处的元素。
list.remove(2);
-
E set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。
list.set(1, 9);
Set接口
Set接口也继承与Collecting接口,同时也继承了Collection接口的所有方法,它有如下特点:
- Set类型容器中不能包含重复元素,当加入一个元素到容器中的时候,要比较元素的内容是否存在重复的,所以加入Set类型的对象容器的对象必须重写equals()方法。
- 元素可能有顺序也有肯能没顺序。
- 因为元素有可能没顺序,所以不能基于索引访问Set中的元素。
HashSet类
HashSet类是基于哈希算法的Set接口实现,他有如下几个特点:
-
当遍历HashSet时,其中元素是没有顺序的。
-
HashSet中不允许出现重复元素。这里的重复元素是指有相同的哈希码,并且用equals()方法进行比较时,返回True的两个对象。
-
允许包含null元素。
Set<String> set = new HashSet<String>();
方法摘要
1. boolean add(E e) 如果此 set 中尚未包含指定元素,则添加指定元素。
set.add("zhangsan");
-
void clear() 从此 set 中移除所有元素。
set.clear();
-
boolean contains(Object o) 如果此 set 包含指定元素,则返回 true。
set.contains("lisi");
-
boolean isEmpty() 如果此 set 不包含任何元素,则返回 true。
set.isEmpty();
-
Iterator iterator() 返回对此 set 中元素进行迭代的迭代器。
Iterator<String> it = set.iterator(); String s = null; while ( it.hasNext()) { s = it.next(); System.out.println(s); }
-
boolean remove(Object o) 如果指定元素存在于此 set 中,则将其移除。
set.remove("lisi");
TreeSet类
TreeSet类不仅实现类Set接口,还实现了SortedSet接口,从而保证了集合中的对象按照一定顺序排序。(字典顺序)
Set<String> set = new TreeSet<String>();
-
boolean add(E e) 将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。
set.add("zhangsan");
-
E ceiling(E e) 返回此 set 中大于等于给定元素的最小元素;如果不存在这样的元素,则返回 null。
set.ceiling("lisi");
-
comparator() 返回对此 set 中的元素进行排序的比较器;如果此 set 使用其元素的自然顺序,则返回 null。
set.comparator();
-
boolean contains(Object o) 如果此 set 包含指定的元素,则返回 true。
set.contains("lisi");
-
E floor(E e) 返回此 set 中小于等于给定元素的最大元素;如果不存在这样的元素,则返回 null。
set.floor("lisi");
-
Iterator iterator() 返回在此 set 中的元素上按升序进行迭代的迭代器。
Iterator<String> it = set.iterator();
-
boolean remove(Object o) 将指定的元素从 set 中移除(如果该元素存在于此 set 中)。
set.remove("lisi");
-
SortedSet subSet(E fromElement, E toElement) 返回此 set 的部分视图,其元素从 fromElement(包括)到 toElement(不包括)。
set.subSet("lisi", "lier");
Map接口
Map接口 是java集合框架中不同于Collection接口的另一个重要接口,它对应的是一种从到值的对应关系集合。
HashMap类
HashMap类是基于哈希算法的Map接口实现。HashMap将它的建保存在哈希表中进行维护,键是唯一的。但是,HashMap并不保证键以特定序列排序,特别是不保证顺序永久不变。
Map<String, String> map = new TreeMap<String, String>();
-
V put(K key, V value) 在此映射中关联指定值与指定键。
map.put("cd", "成都"); map.put("bj", "北京"); map.put("sh", "上海");
-
V get(Object key)返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回 null。
System.out.println(map.get("cd"));
-
boolean containsKey(Object key) 如果此映射包含对于指定键的映射关系,则返回 true。 boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。
map.containsKey("cd"); map.containsValue("成都");
-
Set keySet() 返回此映射中所包含的键的 Set 视图。
System.out.println(map.map.keySet());
-
V remove(Object key)从此映射中移除指定键的映射关系(如果存在)。
map.remove("cd");
TreeMap类
TreeMap类中键存放方式与TreeSet相似,它将键存放在树中,键的顺序按照自然顺序或者自定义顺序两种方式排列。
TreeMap<String, String> map = new TreeMap<String, String>();
-
K ceilingKey(K key) 返回大于等于给定键的最小键;如果不存在这样的键,则返回 null。
map.ceilingKey("cd");
-
boolean containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。
map.containsKey("cd");
-
boolean containsValue(Object value) 如果此映射为指定值映射一个或多个键,则返回 true。
map.containsValue("成都");
-
K floorKey(K key) 返回小于等于给定键的最大键;如果不存在这样的键,则返回 null。
map.floorKey("cd");
-
V get(Object key) 返回指定键所映射的值,如果对于该键而言,此映射不包含任何映射关系,则返回 null
map.get("cd");
-
Set keySet() 返回此映射包含的键的 Set 视图。
map.keySet();
-
V put(K key, V value) 将指定值与此映射中的指定键进行关联。
map.put("cd", "成都"); map.put("bj", "北京"); map.put("sh", "上海");
-
V remove(Object key) 如果此 TreeMap 中存在该键的映射关系,则将其删除。
map.remove("cd");
-
SortedMap<K,V> subMap(K fromKey, K toKey) 返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。
map.subMap("cd", "sh");
Java集合框架