数据结构(Java)——No2.集合框架中接口和其各自对应的常见实现类之间的关系
- Collection 常用方法说明
- Set 常用方法说明
-
- List 常用方法说明
- 1.ArrayList(顺序表)
- 2.linkedList(链表)
- Map常用方法说明
Collection 常用方法说明
| 方法签名 | 说明 |
|---|
| boolean add(E e) | 将元素 e 放入集合中 |
| void clear() | 删除集合中的所有元素 |
| boolean isEmpty() | 判断集合是否没有任何元素,俗称空集合 |
| boolean remove(Object e) | 如果元素 e 出现在集合中,删除其中一个 |
| int size() | 返回集合中的元素个数 |
| Object[] toArray() | 返回一个装有所有集合中元素的数组 |
方法示例:
import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
Collection list = new ArrayList<>();
System.out.println(list.size()); //0
System.out.println(list.isEmpty()); //true
list.add("我");
list.add("爱");
list.add("Java");
System.out.println(list.size()); //3
System.out.println(list.isEmpty()); //false
Object[] array = list.toArray(); //[我, 爱, Java]
System.out.println(Arrays.toString(array));//我 爱 Java
for (String s : list) {
System.out.println(s); //我
}
list.remove("爱");
for (String s : list) {
System.out.println(s); //Java
}
list.clear();
System.out.println(list.size()); //0
System.out.println(list.isEmpty()); //true
}
}
Set 常用方法说明
| 方法 | 解释 |
|---|
| boolean add(E e) | 添加元素,但重复元素不会被添加成功 |
| void clear() | 清空集合 |
| boolean contains(Object o) | 判断 o 是否在集合中 |
| Iterator iterator() | 返回迭代器 |
| |
| boolean remove(Object o) | 删除集合中的 o |
| int size() | 返回set中元素的个数 |
| boolean isEmpty() | 检测set是否为空,空返回true,否则返回false |
| Object[] toArray() | 将set中的元素转换为数组返回 |
| boolean containsAll(Collection> c) | 集合c中的元素是否在set中全部存在,是返回true,否则返回false |
| boolean addAll(Collection extends E> c) | 将集合c中的元素添加到set中,可以达到去重的效果 |
TreeSet方法示例
package com.yty;
import java.util.*;
public class Test {
public static void main(String[] args) {
Set s = new TreeSet<>();
// add(key): 如果key不存在,则插入,返回ture
// 如果key存在,返回false
boolean isIn = s.add("apple");
s.add("orange");
s.add("peach");
s.add("banana");
System.out.println(s.size());
System.out.println(s);
isIn = s.add("apple");
// add(key): key如果是空,抛出空指针异常
//s.add(null);
// contains(key): 如果key存在,返回true,否则返回false
System.out.println(s.contains("apple"));
System.out.println(s.contains("watermelen"));
// remove(key): key存在,删除成功返回true
// key不存在,删除失败返回false
// key为空,抛出空指针异常
s.remove("apple");
System.out.println(s);
s.remove("watermelen");
System.out.println(s);
// 抛出空指针异常
// s.remove(null);
Iterator it = s.iterator();
while(it.hasNext()){
System.out.print(it.next() + " ");
}
System.out.println();
}
}
HashSet方法示例
package com.yty;
import java.util.*;
public class Test {
public static void main(String[] args) {
Set s = new HashSet<>();
// add(key): 如果key不存在,则插入,返回ture
// 如果key存在,返回false
boolean isIn = s.add("apple");
s.add("orange");
s.add("peach");
s.add("banana");
System.out.println(s.size());
System.out.println(s);
isIn = s.add("apple");
// add(key): key如果是空,抛出空指针异常
//s.add(null);
// contains(key): 如果key存在,返回true,否则返回false
System.out.println(s.contains("apple"));
System.out.println(s.contains("watermelen"));
// remove(key): key存在,删除成功返回true
// key不存在,删除失败返回false
// key为空,抛出空指针异常
s.remove("apple");
System.out.println(s);
s.remove("watermelen");
System.out.println(s);
// 抛出空指针异常
// s.remove(null);
Iterator it = s.iterator();
while(it.hasNext()){
System.out.print(it.next() + " ");
}
System.out.println();
}
}
List 常用方法说明
| 方法 | 解释 |
|---|
| boolean add(E e) | 尾插 e |
| void add(int index, E element) | 将 e 插入到 index 位置 |
| boolean addAll(Collection extends E> c) | 尾插 c 中的元素 |
| E remove(int index) | 删除 index 位置元素 |
| boolean remove(Object o) | 删除遇到的第一个 o |
| E get(int index) | 获取下标 index 位置元素 |
| E set(int index, E element) | 将下标 index 位置元素设置为 element |
| void clear() | 清空 |
| boolean contains(Object o) | 判断 o 是否在线性表中 |
| int indexOf(Object o) | 返回第一个 o 所在下标 |
| int lastIndexOf(Object o) | 返回最后一个 o 的下标 |
| List subList(int fromIndex, int toIndex) | 截取部分 list |
1.ArrayList(顺序表)
| 方法 | 解释 |
|---|
| ArrayList() | 无参构造 |
| ArrayList(Collection extends E> c) | 利用其它Collection构建ArrayList |
| ArrayList(int initialCapacity) | 指定顺序表初始容量 |
2.linkedList(链表)
方法示例:
package com.yty;
import java.util.ArrayList;
import java.util.linkedList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List courses = new ArrayList<>();
courses.add("C 语言");
courses.add("Java SE");
courses.add("Java Web");
courses.add("Java EE");
// 和数组一样,允许添加重复元素
courses.add("C 语言");
// 按照添加顺序打印
System.out.println(courses);
// 类似数组下标的方式访问
System.out.println(courses.get(0));
System.out.println(courses);
courses.set(0, "计算机基础");
System.out.println(courses);
// 截取部分 [1, 3)
List subCourses = courses.subList(1, 3);
System.out.println(subCourses);
// 重新构造
List courses2 = new ArrayList<>(courses);
System.out.println(courses2);
List courses3 = new linkedList<>(courses);
System.out.println(courses3);
// 引用的转换
ArrayList courses4 = (ArrayList)courses2;
System.out.println(courses4);
// linkedList c = (linkedList)course2; 错误的类型
linkedList courses5 = (linkedList)courses3;
System.out.println(courses5);
// ArrayList c = (ArrayList)course3; 错误的类型
}
}
Map常用方法说明
| 方法签名 | 说明 |
|---|
| V get(Object k) | 根据指定的 k 查找对应的 v |
| V getOrDefault(Object k, V defaultValue) | 根据指定的 k 查找对应的 v,没有找到用默认值代替 |
| V put(K key, V value) | 将指定的 k-v 放入 Map |
| boolean containsKey(Object key) | 判断是否包含 key |
| boolean containsValue(Object value) | 判断是否包含 value |
| Set> entrySet() | 将所有键值对返回 |
| boolean isEmpty() | 判断是否为空 |
| int size() | 返回键值对的数量 |
方法实例:
import java.util.Map;
import java.util.HashMap;
public class Demo {
public static void main(String[] args) {
Map map = new HashMap<>();
System.out.println(map.size());
System.out.println(map.isEmpty());
System.out.println(map.get("作者"));
System.out.println(map.getOrDefault("作者", "佚名"));
System.out.println(map.containsKey("作者"));
System.out.println(map.containsValue("佚名"));
map.put("作者", "鲁迅");
map.put("标题", "狂人日记");
map.put("发表时间", "1918年");
System.out.println(map.size());
System.out.println(map.isEmpty());
System.out.println(map.get("作者"));
System.out.println(map.getOrDefault("作者", "佚名"));
System.out.println(map.containsKey("作者"));
System.out.println(map.containsValue("佚名"));
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
}