目录



左边是单例集合,右边是双例集合(每个元素要具备Key-Value两个特征)


Key相当于x,Value相当于y,每个x对应唯一y
![]()






PS:一般创建对象引用,我们采用接口类型定义,有句话说的好,面向对象编程很大程度上是面向接口编程,方便以后代码修改和多态。
所以,下面举个例子

这里填2就在最后加一个,填1,那就itbz往后移,如果是3,那就报错:索引不能大于长度

然后size()这些哎,懂得都懂



返回被替换的元素




那么查找元素最后一次出现的位置:


这是抽象方法,每个实现类具体实现都不太一样

1)避免类型转换时发生错误
2)把运行时出现的异常提前到编译期,
而实际上泛型是一种仅存于编译期间的神奇的东西,
所以下面这样干是会报错的(哪怕你的List本来泛型写的就是string):

而且强转也只能对某一个元素强制转换,不能对一个集合转换。除非你这个数组本来是string然后通过一些代码变成了object,然后才可以整个数组再转换为string
那怎么办呢?在迭代时强制转换即可:

这里toArray()里面要传进去一个string[],所以new出来。

但是类型需要参照泛型中的类型

这样就会报错。

- List
arr = new ArrayList<>(); - arr.add("1");
- arr.add("1");
- arr.add("1");
- arr.add("1");
-
- ArrayList
arr2 = new ArrayList<>(); - arr2.add("1");
-
- arr.addAll(arr2);
-
- for (String s : arr) {
- System.out.println(s);
- }
这些合并是宽松的,你甚至可以把一个set去并list。

- List
arr = new ArrayList<>(); - arr.add("1");
- arr.add("1");
- arr.add("1");
- arr.add("1");
-
- ArrayList
arr2 = new ArrayList<>(); - arr2.add("2");
-
- System.out.println(arr.retainAll(arr2) );
-
- for (String s : arr) {
- System.out.println(s);
- }
这里因为arr没有2,所以交集后为空,那么后面的for什么也打印不出来

就是去掉交集的部分。