集合继承体系:
Collection接口:
Collection接口概述及方法:
Collection 接口中的常用方法:
Collection coll = new ArrayList<>();//创建集合
coll.add("hello");//给集合添加一个元素
coll.add("world");//给集合再添加一个元素
System.out.println(coll);// 显示 [hello, world]
Iterator接口:
Iterator接口概述及使用:
Collection coll = new ArrayList<>();//创建一个集合
coll.add("hello");//给集合中 添加一个元素
coll.add("world");// 给集合 添加一个元素
//获得迭代器
Iterator iterator = coll.iterator();
while(iterator.hasNext()){// 如果有下一个元素
Object next = iterator.next();// 获取下一个元素
// 存入的是 字符串
// 所有要将 object 转成 string
System.out.println((String)next);
}
List接口:
List接口概述及方法:
List coll = new ArrayList<>();//创建一个集合
coll.add("hello");//给集合中 添加一个元素
coll.add("world");// 给集合 添加一个元素
System.out.println(coll);// [hello, world]
ListIterator接口:
ListIterator概述及使用:
ArrayList
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
//把指针移到集合最后
ListIterator
// list.add(7);
while(it.hasNext()){
System.out.println(it.next());
}
it.add(7);//
//逆向遍历列表
while(it.hasPrevious()){
System.out.println(it.previous());
}
ArrayList 类:
ArrayList类的概述:
底层数据结构是数组,查询快,增删慢
线程不安全,效率高,有序的,可重复
ArrayList的使用:
//构造一个初始容量为 10 的空列表。
ArrayList()
//构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的
顺序排列的。
ArrayList(Collection extends E> c)
//构造一个具有指定初始容量的空列表。
ArrayList(int initialCapacity)
常用方法参考List(使用方式几乎一致)
//创建 ArrayList 集合 对象
ArrayList arr = new ArrayList();
arr.add("hello1");// 给集合添加一个元素
arr.add("hello2");// 给集合添加一个元素
ArrayList的常用案例-添加整数遍历集合:
ArrayList
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
//把指针移到集合最后
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
ArrayList的常用案例-添加字符串遍历集合:
ArrayList
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
//把指针移到集合最后
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
ArrayList的常用案例-添加对象遍历集合:
Student.java中的内容:
public class Student {
private String name;
private int age;
private String sex;
public Student(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
Test.java中的内容:
public class Test {
public static void main(String[] args) {
ArrayList
list.add(new Student("张三", 18, "男"));
list.add(new Student("李四", 11, "女"));
list.add(new Student("王五", 19, "男"));
list.add(new Student("赵六", 21, "女"));
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
Vector 类:
Vector类概述及使用:
//创建 Vector 集合 对象 在集合中存入 字符串
Vector v = new Vector();
System.out.println(v);//[]
v.add("hello");
System.out.println(v);//[hello]
Vector 迭代器:
//创建 Vector 集合 对象 在集合中存入 字符串
Vector v = new Vector();
v.add("hello");
v.add("world");
v.add("java");
//获取迭代器
Enumeration elements = v.elements();
//有没有下一个元素 与 ListIterator 用法一样
while(elements.hasMoreElements()){
// 获取下一个元素
Object nextElement = elements.nextElement();
System.out.println((String)nextElement);
}
Vector的常用案例:
Vector存入String对象:
// 创建 Vector 集合 对象 在集合中存入 字符串
Vector v = new Vector();
v.add("hello");
v.add("world");
v.add("java");
// 普通for遍历
for (int i = 0; i < v.size(); i++) {
// 多态 向下转型
System.out.println((String) v.get(i));
}
Vector存入自定义对象:
Vector v = new Vector();
v.add(new Student("赵云",18,"男"));// 给集合添加一个元素
v.add(new Student("张飞",19,"女"));// 给集合添加一个元素
v.add(new Student("关于",20,"男"));// 给集合添加一个元素
v.add(new Student("刘备",21,"女"));// 给集合添加一个元素
//普通for遍历 集合
for (int i = 0; i < v.size(); i++) {
//获取的时候 获取的是 object对象 父类接收子类 多态
Object object = v.get(i);// 集合中的一个元素 是一个 Student 对象
//多态 向下转型
Student s = (Student)object;
System.out.println(s.getName()+"---"+s.getAge());
}
LinkedList类:
LinkedList类概述:
底层数据结构是链表,查询慢,增删快
线程不安全,效率高
LinkedList类的特有功能:
//创建 LinkedList 对象
LinkedList link = new LinkedList();
link.add("hello");//添加一个元素
link.add("world");
System.out.println(link);//[hello, world]
link.addFirst("java");// 在第一个位置插入 一个元素
System.out.println(link);//[java, hello, world]
link.addLast("lvoe");//在集合最后的位置加入一个 元素
System.out.println(link);//[java, hello, world, lvoe]
删除集合中的第一个元素 和 删除集合中的最后一个元素:
//创建 LinkedList 对象
LinkedList link = new LinkedList();
link.add("hello");//添加一个元素
link.add("world");
link.add("java");
//移除第一个元素 并得到该元素
Object removeFirst = link.removeFirst();
System.out.println(removeFirst);// hello
System.out.println(link);// [world, java]
//移除最后一个元素 并得到该元素
Object removeLast = link.removeLast();
System.out.println(removeLast);//java
System.out.println(link);//[world]
LinkedList类的常用案例-首尾添加:
LinkedList
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.addFirst(0);//在最前面添加
list.addLast(5);//在最后添加 等价add()方法
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
LinkedList类的常用案例-指定位置插入:
LinkedList
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(1,12);//在索引为1的位置插入一个12
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
LinkedList类的常用案例-首尾删除:
LinkedList
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("-------------删除以后效果------------------");
list.removeFirst();//删除第一个元素
list.removeLast();//删除最后一个元素
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
泛型:
泛型的由来、概述、使用:
泛型类的概述和使用:
格式:
public class 类名<泛型类型1,…>
注意:泛型类型必须是引用类型
public class FanXingDemo
public void show(T t){
System.out.println(t);
}
}
测试类:
public static void main(String[] args) {
FanXingDemo fd1 = new FanXingDemo();
fd1.show("java");
fd1.show(1);
//创建对象时 不指定泛型 调用方法 可以传入任何类型
//但是如果在方法中做类型转换 有可能出现类型转换异常
FanXingDemo
fd2.show("hello"); //指定泛型 在调用方法时 只能 传入 指定的泛型类型
}
泛型方法的概述和使用:
public
System.out.println(t);
}
泛型接口的概述和使用:
格式:
格式:public interface 接口名<泛型类型1…>