Mosh_Java笔记 P3-3.2 集合类
1. 列表接口
如果只关心集合里的增加删除等操作,那么用集合
如果需要关心集合的顺序,索引,则用List列表
集合中不支持索引,而在列表中,假如我们add了'1''2''3',想在list[0]处插入一个新的数字,则可以使用索引
如
list.add(0,"!");如图
当然由于list仍然属于集合,我们也可以用集合的方式来操作它,例如添加所有的元素
Colletions.addAll(list,"a""b""c");
但是我们同时可以使用列表的操作,
比如可以通过列表的索引来访问对象
list.get(0); -返回a
也可以用list的方法来进行赋值,例如
list.set(0,"a+"); -sout(list)会返回[a+,b,c];
也可以通过列表的下表来删除元素
如:list(0),注意这里和集合不同,集合里不能通过索引来删除元素
也可以查询元素第一次出现的位置即索引
如list.indexOf("a");则会返回a第一次出现的位置0 ,若没有搜索到存在则会返回-1
与之类似的可以返回a最后一次返回的位置,比如我们在list里末尾再添加一个元素‘a’
可以通过list.lastIndexOf("a"),来返回最后一次a出现的索引位置,即3
还可以返回list的子列表,如
sout(subList(0,2));注意左闭右开,此时输出会返回一个新列表[a,b]
2. 数组排序
3. 队列
4. Set
set的四种操作||假如我们现在有两个集合
可以对集合做三种操作(并集,交集 ,补集)
-
- Union set1.addAll(set2) 输出abcd
- 2.Interection set1.retainAll(set2) 输出set1和set2共有的元素,输出bc
- 3.Difference set1.removeAll(set2) 移除set1里所有set2含有的元素再输出1,即输出a
5. Hash Table(哈希表)
6. Map
-
- Map的定义(90%以上的情况,我们用到的都是HashMap)
Map<K,V> map = new HashMap<>();
- Map的定义(90%以上的情况,我们用到的都是HashMap)
-
- 往map中存放元素-put
map.put(1,“羊肉”)
若存放的是对象,比如定义了个对象cutomer
var c1 = new Customer("a","email1");
则存放对象可以用map.put(c1.getEmail(),c1)
- 往map中存放元素-put
-
- 若我们想依据键去找对应的value,可以用get方法
如 var customer = map.get("email1"),get的是键e1,则会返回值a
- 若我们想依据键去找对应的value,可以用get方法
***如果我们找到了一个map中不存在的键值, 输出时会返回null
可以通过设定默认的返回值
例如 我们get了一个e10,但并不存在这样的键
会返回unknown
-
- 查找是否含有某个键
map.containsKey("") -返回的是一个布尔值
- 查找是否含有某个键
-
- 替换键值对
map.repalce("e1",new Customer("a++",e1) ),即设定相同的键覆盖即可
- 替换键值对
map的输出
-
- map的遍历
由于map接口不可变,不可以用for循环迭代map
- map的遍历
有三种方法可以遍历map
-
- 遍历keySet -会返回键对应的键
- 遍历keySet -会返回键对应的键
-
- entrySet - 返回一个集合类型,因为集合可以迭代
- entrySet - 返回一个集合类型,因为集合可以迭代
输出是这样的,同时输出键和值
或者我们可以单独输出 getKey()或getValue()
for(entry : map.entrySet())
System.out.println(entry.getKey/getValue)
-
- 返回值的集合,同样也是可迭代的
返回的是值的集合
- 返回值的集合,同样也是可迭代的