16.01 去除ArrayList中重复字符串元素的方式
- 做判断:新集合中是否包含老集合的元素
- contains:关键方法,底层依赖的还是equals方法
package com.kevin.list;
import java.util.ArrayList;
import java.util.Iterator;
@SuppressWarnings({ "unchecked", "rawtypes" })
public class Demo1_ArrayList {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("v");
list.add("v");
ArrayList newList = getSingle(list);
System.out.println(newList);
}
public static ArrayList getSingle(ArrayList oldList) {
ArrayList newList = new ArrayList<>();
Iterator it = oldList.iterator();
while(it.hasNext()) {
Object obj = it.next();
if(!newList.contains(obj)) {
newList.add(obj);
}
}
return newList;
}
}
16.02 去除ArrayList中重复的自定义对象元素
- 关键点:如何判断两个自定义对象是否相同
- contains和remove底层依赖的都是equals方法
16.03 LinkedList的特有功能
- addFirst和addLast
- getFirst和getLast
- removeFirst和removeLast
- get(int index)
16.04 栈和队列数据结构
16.05 用LinkedList模拟栈的数据结构
16.06 泛型的概述和基本使用
- <>尖括号里面就是泛型,里面写一个引用数据类型,加上泛型,就可以限定集合存储的数据类型
- 泛型的好处
- 提高安全性,将运行期的错误转移到编译期
- 省去了强转的麻烦
- 泛型的注意事项
- 必须是引用数据类型
- 前后泛型要一致
- 后面的泛型可以省略(1.7版本的新特性,菱形泛型)
- 泛型最好不要定义成Object,因为没有意义
16.07 ArrayList存储字符串和自定义对象并遍历(泛型版)
ArrayList<Person> list = new ArrayList<>();
16.08 泛型的由来
- 早期都是用Object,后来发现有安全隐患
- 所以Java通过提供泛型解决了这一问题
16.09 泛型类的概述和使用
16.10 泛型方法
- 方法的泛型要与类的泛型一致
- 静态方法必须声明自己的泛型
16.11 泛型接口
- 类实现一个接口,就是想扩展某种特定的功能,本质就是添加方法,类似于objc中的协议
16.12 泛型高级之通配符
List<?> list = new ArrayList<Integer>();
- 向下限定,?extends E ,应用场景:集合中只能添加子类对象
- 向上限定,?super E,应用场景:TreeSet
16.13 增强for的概述和使用
16.14 ArrayList存储自定义对象并用foreach遍历
for (Person person : list) {
System.out.println(person);
}
16.15 三种迭代能否删除
- 普通for循环
- 迭代器
- 不能用集合的remove方法,会发生并发修改异常。
- 用it.remove,迭代器Iterator的remove方法
- 增强for循环
16.16 静态导入
- 用import直接导入方法
- import static java.util.Arrays.sort;
- sort(Arr)
- 一般不用,能看懂就行了
16.17 可变参数的概述和使用
- int...arr
- 可变参数其实是一个数组
- 可变参数底层是把参数封装为一个数组
- 如果有多个参数,可变参数一定要放到最后
16.18 Arrays工具类的asList()方法的使用
- 就是数组转集合
- 可以使用集合中的方法
- 基本类型的数组转换成集合会将整个数组当做一个对象
- 数组长度小于集合的size时,会自动扩容
- 数组的长度大于集合的size时,会打印null
- 数组并没有重写toString方法,所以要遍历,才能打印
16.19 ArrayList嵌套ArrayList
package com.kevin.generic;
import java.util.ArrayList;
import com.kevin.bean.Person;
public class Demo1_Generic {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList<ArrayList<Person>> list = new ArrayList<>();
ArrayList<Person> first = new ArrayList<>();
first.add(new Person("杨幂", 30));
first.add(new Person("李冰冰", 33));
first.add(new Person("范冰冰", 20));
ArrayList<Person> second = new ArrayList<>();
second.add(new Person("黄晓明", 31));
second.add(new Person("赵薇", 40));
second.add(new Person("陈坤", 28));
list.add(first);
list.add(second);
for (ArrayList<Person> a : list) {
for (Person person : a) {
System.out.println(person);
}
}
}
}
网友评论