云计算百科
云计算领域专业知识百科平台

java关于集合类

 

 一、单列集合

1. Collection

相关方法

方法说明
boolean add(E e) 把给定的对象添加到当前集合中
void clear() 清空集合中所有的元素
boolean remove(E e) 把给定的对象在当前集合中删除
boolean contains(Object obj) 判断当前集合中是否包含给定的对象
boolean isEmpty() 判断当前集合是否为空
int size() 返回集合中元素的个数 / 集合的长度

2. List

相关方法

方法说明
void add(int index,E element) 在此集合中的指定位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被删除的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
E get(int index) 返回指定索引处的元素

3. ArrayList

相关方法

方法说明
boolean add(E e) 添加元素,返回值表示是否添加成功
boolean remove(E e) 删除指定元素,返回值表示是否删除成功
E remove(int index) 删除指定索引的元素,返回被删除元素
E set(int index,E e) 修改指定索引下的元素,返回原来的元素
E get(int index) 获取指定索引的元素
int size() 集合中元素的数量

遍历方式

迭代器

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> it = list.iterator();
while(it.hasNext()) {
String s = it.next();
System.out.println(s);
}
}

列表迭代器

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
ListIterator<String> listIterator = list.listIterator();
while(listIterator.hasNext()) {
System.out.println(listIterator.next());
}
}

增强for

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
for(String s : list) {
System.out.println(s);
}
}

lambda表达式遍历

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.forEach(s -> System.out.println(s));
}

普通for

public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}

4. LinkedList

相关方法

方法说明
void addFirst(E e) 在该列表开头插入指定的元素
void addLast(E e) 将指定的元素追加到此列表的末尾
E getFirst() 返回此列表中的第一个元素
E getLast() 返回此列表中的最后一个元素
E removeFirst() 从此列表中删除并返回第一个元素
E removeLast() 从此列表中删除并返回最后一个元素

5. Set

相关方法

继承于Collection

6. HashSet

相关方法

继承于Set

特点:无序、不重复、无索引

7. LinkedHashSet

相关方法

继承于Set

特点:有序、不重复、无索引

8. TreeSet

相关方法

方法作用
E first() 获取最小元素
E last() 获取最大元素
E lower(E e) 获取 小于 e 的最大元素
E higher(E e) 获取 大于 e 的最小元素
E floor(E e) 获取 小于等于e 的最大元素
E ceiling(E e) 获取 大于等于e 的最小元素
SortedSet<E> subSet(E from, E to) 获取 [from, to) 区间元素
SortedSet<E> headSet(E to) 获取小于 to 的元素
SortedSet<E> tailSet(E from) 获取大于等于 from 的元素

特点:可排序、不重复、无索引

排序方式

方式一

在javaBean中实现Comparable接口指定排序规则

方式二

创建TreeSet对象时,传递比较器Comparable指定规则

单列集合使用场景

1. 如果想要集合中的元素可重复

用ArrayList集合,基于数组的。(用的最多)
2. 如果想要集合中的元素可重复,而且当前的增删操作明显多于查询

用LinkedList集合,基于链表的。
3. 如果想对集合中的元素去重

用HashSet集合,基于哈希表的。(用的最多)
4. 如果想对集合中的元素去重,而且保证存取顺序

用LinkedHashSet集合,基于哈希表和双链表,效率低于HashSet。
5. 如果想对集合中的元素进行排序

用TreeSet集合,基于红黑树。后续也可以用List集合实现排序

二、双列集合

1. Map

相关方法

方法说明
V put(K key,V value) 添加元素
V remove(Object key) 根据键删除键值对元素
void clear() 移除所有的键值对元素
boolean containsKey(Object key) 判断集合是否包含指定的键
boolean containsValue(Object value) 判断集合是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 集合的长度,也就是集合中键值对的个数
V getOrDefault(Object key, V defaultValue) 从 Map 中取 key 对应的值,如果 key 不存在,返回默认值。

2. HashMap

相关方法

继承于Map

遍历方式

键找值

public static void main(String[] args) {
HashMap<String,String> map = new HashMap<>();
map.put("A","65");
map.put("B","66");
map.put("C","67");
Set<String> keys = map.keySet();
for (String key : keys) {
String value = map.get(key);
System.out.println(key + " = " + value);
}
}

键值对

public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("A", "65");
map.put("B", "66");
map.put("C", "67");
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> entry : entries) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key + "=" + value);
}
}

Lambda表达式

public static void main(String[] args) {
HashMap<String,String> map = new HashMap<>();
map.put("A","65");
map.put("B","66");
map.put("C","67");
// 完整版
map.forEach(new BiConsumer<String, String>() {
@Override
public void accept(String key, String value) {
System.out.println(key + "=" + value);
}
});

System.out.println("———————————-");
// 简写版
map.forEach((String key, String value)->{
System.out.println(key + "=" + value);
});
}

3. LinkedHashMap

相关方法

继承于HashMap

4. TreeMap

相关方法

方法说明
K firstKey() 返回最小 key
K lastKey() 返回最大 key
K lowerKey(K key) 返回小于 key 的最大 key
K higherKey(K key) 返回大于 key 的最小 key
K floorKey(K key) 返回 ≤ key 的最大 key
K ceilingKey(K key) 返回 ≥ key 的最小 key
SortedMap<K,V> subMap(K fromKey, K toKey) 返回子 Map
SortedMap<K,V> headMap(K toKey) 返回子 Map
SortedMap<K,V> tailMap(K fromKey) 返回子 Map
Comparator<? super K> comparator() 返回比较器(null = 自然排序)

排序规则

方式一

在javaBean中实现Comparable接口指定排序规则

方式二

创建TreeSet对象时,传递比较器Comparable指定规则

三、Collections工具类

相关方法

方法说明
static <T> boolean addAll(Collection<T> c, T… elements) 批量添加元素
static void shuffle(List<?> list) 打乱 List 集合元素的顺序
static <T> void sort(List<T> list) 排序
static <T> void sort(List<T> list, Comparator<T> c) 根据指定的规则进行排序
static <T> int binarySearch (List<T> list, T key) 以二分查找法查找元素
static <T> void copy(List<T> dest, List<T> src) 拷贝集合中的元素
static <T> int fill (List<T> list, T obj) 使用指定的元素填充集合
static <T> void max/min(Collection<T> coll) 根据默认的自然排序获取最大 或小值
static <T> void swap(List<?> list, int i, int j) 交换集合中指定位置的元素

四、不可变集合

相关方法

方法说明
static <E> List<E> of(E… elements) 创建一个不可变的 List
static <E> Set<E> of(E… elements) 创建一个不可变的 Set(无重复元素)
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, …) 创建一个不可变 Map
static <E> List<E> copyOf(Collection<? extends E> coll) 根据已有集合创建不可变 List
static <E> Set<E> copyOf(Collection<? extends E> coll) 根据已有集合创建不可变 Set
static <K,V> Map<K,V> copyOf(Map<? extends K, ? extends V> map) 根据已有 Map 创建不可变 Map
赞(0)
未经允许不得转载:网硕互联帮助中心 » java关于集合类
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!