Java教程 集合类list、set、map的相关知识点

Java集合类框架:
Java ArrayList 类:
关于ArrayList 的相关描述:
1、ArrayList 类其实是一个动态的数组列表
2、ArrayList 类可以自动扩充数组的大小。底层实现就是数组。
3、ArrayList 类有严格的顺序,可以有重复的元素。
4、list 实现了collection 接口
声明ArrayList集合 :
ArrayList<Integer> list = new ArrayList();
add(); | 往ArrayList 集合中添加 |
addAll(); | 往ArrayList 集合中添加某个集合中所有的元素 |
get(); | 从往ArrayList 集合中获取指定位置的数据 |
size(); | 获取动态数据ArrayList中元素的个数 |
clear(); | 清空ArrayList 集合中的所有元素 |
contains(); | 判断集合中是不是有这个元素 |
containsAll() | 查看 arraylist 是否包含指定集合中的所有元素 |
set(int i,Obje obj); | 修改ArrayList 集合中第 i 个的值为 obj |
remove(); | 删除ArrayList 集合中的某个元素 |
removeAll() | 删除ArrayList 集合中的全部元素 |
indexOf() | 返回 arraylist 中元素的索引值 |
clone() | 复制一份 arraylist |
subList() | 截取部分 arraylist 的元素 |
关于ArrayList的更多方法:
sort() | 排序 |
isEmpty() | 判断是否为空 |
toArray() | 转换成数组 |
toString() | 转换成字符串 |
ensureCapacity() | 设置指定容量大小的 arraylist |
lastIndexOf() | 返回指定元素在 arraylist 中最后一次出现的位置 |
retainAll() | 保留 arraylist 中在指定集合中也存在的那些元素 |
trimToSize() | 将 arraylist 中的容量调整为数组中的元素个数 |
removeRange() | 删除 arraylist 中指定索引之间存在的元素 |
replaceAll() | 将给定的操作内容替换掉数组中每一个元素 |
removeIf() | 删除所有满足特定条件的 arraylist 元素 |
forEach() | 遍历 arraylist 中每一个元素并执行特定操作 |
关于ArrayList的迭代:
迭代方式一:for循环,通过索引进行迭代
public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); list.add("刘广法博客"); list.add("的网址是:"); list.add("liuguangfa.com"); //迭代 for(int i = 0;i<list.size();i++) { System.out.println(list.get(i)); } }
迭代方式二:通过迭代器进行迭代
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("刘广法博客"); list.add("的网址是:"); list.add("liuguangfa.com"); // 迭代 Iterator<String> it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }
迭代方式三:通过隐藏式迭代器进行迭代
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("刘广法博客"); list.add("的网址是:"); list.add("liuguangfa.com"); // 迭代 for (String i : list) { System.out.println(i); } }
迭代方式四:通过集合的forEach方法
4.1通过创建一个类:MyConsumer
package com.liuguangfa.list; import java.util.function.Consumer; public class Myconsumer implements Consumer<String>{ @Override public void accept(String t) { System.out.println(t); } }
在main方法中进行调用
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("刘广法博客"); list.add("的网址是:"); list.add("liuguangfa.com"); // 迭代 list.forEach(new Myconsumer()); }
4.2通过 forEach 方法
list.forEach(System.out::println);
4.3通过 forEach 方法
list.forEach(i ->System.out.println(i));
以上方法Java控制台的输出结果一定是:
的网址是:
liuguangfa.com
Java HashSet 类:
关于HashSet 类的描述:
1、HashSet 类无序
2、HashSet 类不重复(判断两个元素是否重复,是通过判断对象的哈希值是否相同,如果相同则认为两个元素相同,不相同就认为两个元素不同)
3、Set 实现了collection 接口
声明HashSet 类
HashSet<Student> set = new HashSet<>();
add(); | 添加元素 |
addAll(); | 添加全部元素 |
size(); | 集合的长度 |
get(); | 获取某个索引的元素 |
remove(); | 删除元素 |
contains(); | 判断元素中是否有这个元素 |
关于HashSet 的迭代:
HashSet 的迭代方式除了不能使用索引进行迭代其他的都可以进行迭代
迭代方法一:通过隐式迭代器进行迭代
public static void main(String[] args) { HashSet<String> set = new HashSet<>(); set.add("刘广法博客"); set.add("的网址:"); set.add("liuguangfa.com"); // 迭代 for (String iString : set) { System.out.println(iString); } }
Java控制台打印结果:
liuguangfa.com
刘广法博客
的网址:
Java HashMap 类:
关于 HashMap的相关描述:
1、映射:存储的数据是键值对(key - value)
2、实现了 map 接口
3、可以有重复数据,无序的
声明 HashMap
HashMap<Integer, String> map = new HashMap<>();
put(key,value); | 添加元素 |
putAll(HashMap) | 添加所有元素到集合 |
size(); | 集合长度 |
get(key); | 获取指定 key 值的 value |
remove(key); | 删除指定 key 值的 value |
clear(); | 清除集合 |
keySet(); | 返回键(key)的集合 |
更多关于HashMap 的方法
clone(); | 赋值一份 HashMap |
isEmpty(); | 判断 HashMap 是否为空 |
putIfAbsent(); | 如果 hashMap 中不存在指定的键,则将指定的键/值对插入到 hashMap 中。 |
containsKey(); | 检查 hashMap 中是否存在指定的 key 对应的映射关系。 |
containsValue() | 检查 hashMap 中是否存在指定的 value 对应的映射关系。 |
replace() | 替换 hashMap 中是指定的 key 对应的 value。 |
replaceAll() | 将 hashMap 中的所有映射关系替换成给定的函数所执行的结果。 |
getOrDefault() | 获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值 |
forEach() | 对 hashMap 中的每个映射执行指定的操作。 |
entrySet() | 返回 hashMap 中所有映射项的集合集合视图 |
keySet() | 返回指定集合中 key 的集合视图 |
values() | 返回 hashMap 中存在的所有 value 值。 |
merge() | 添加键值对到 hashMap 中 |
compute() | 对 hashMap 中指定 key 的值进行重新计算 |
computeIfAbsent() | 对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hasMap 中 |
computeIfPresent() | 对 hashMap 中指定 key 的值进行重新计算,前提是该 key 存在于 hashMap 中。 |
关于 HashMap 迭代:
方法一:通过提取 key 的集合来获取
也就是转化为 Set 集合进行输出
public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("one", "刘广法博客"); map.put("twe", "的网址是:"); map.put("three", "liuguangfa.com"); // 迭代 Set<String> keys = map.keySet(); for (String i : keys) { System.out.println(map.get(i)); } }
Java控制台打印结果:
的网址是:
刘广法博客
liuguangfa.com
方法二:直接通过返回值的集合:
获取值不能使用 set 集合来接收,因为 HashMap 的 value 值可能存在相同的数据,而 Set 集合不能储存相同的数据。
用 Collection 来接受,是有顺序的,而 Map 是没有顺序的 ,这种迭代没有办法获取 key 的值。
public static void main(String[] args) { HashMap<String, String> map = new HashMap<>(); map.put("one", "刘广法博客"); map.put("twe", "的网址是:"); map.put("three", "liuguangfa.com"); // 迭代 Collection<String> e = map.values(); for(String i:e) { System.out.println(i); } }
方法三:Entry 用于表示一个键值对
用 entrySet 进行返回所有键值对的集合
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("刘广法博客"); list.add("的网址是:"); list.add("liuguangfa.com"); // 迭代 Iterator<String> it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }0
方法四:通过forEach进行迭代:
public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("刘广法博客"); list.add("的网址是:"); list.add("liuguangfa.com"); // 迭代 Iterator<String> it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }1
Java LinkedList 类:
作者:域名博客,网站地址:https://liuguangfa.com/,转载注明出处!