集合上
集合:
Collection<E>: 单列集合的顶层接口
子接口
ArrayList<E>:
创建Collection我用多态的方法
Collection<String> c = new ArrayList<String>();
<E>:是一种特殊的数据类型,泛型;
Collection<String> c = new ArrayList<String>();
c.add("字符串");//在数组中添加元素
直接输出c对象ArrayList重写了toString()方法会按指定的方式输出
成员方法:
c.add(E e);//添加元素 返回true
c.remove(Object o)//在集合中删除元素 如果删除失败就返回false
c.clear()//清空集合中的元素
c.contains(Object o)//判断集合中是否存在改元素
c.isEmpty()//判断集合是否为空
c.size()//判断集合的元素
遍历集合:
迭代器:
Iterator<E> it= c.iterator();
it.next()//获取下一个元素
//如果获取所有元素后还获取就会报错 NoSuchElementException
it.hasnext()//如果仍有元素可以迭代就返回true
例如:
package com.hy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo {
public static void main(String[] args) {
//Collection集合创建
Collection<Student> c=new ArrayList<>();
//Student对象创建
Student student=new Student();
student.setName("张的");
student.setAge(12);
Student student2=new Student();
student2.setName("张2");
student2.setAge(13);
//集合中添加泛型创建的对象
c.add(student);
c.add(student2);
System.out.println(c);
//迭代器遍历集合
Iterator<Student> iterator=c.iterator();
while (iterator.hasNext()){
//什么集合的泛型就用什么对象的类型来接收
Student s=iterator.next();
System.out.println(s.getName() +"-----"+s.getAge());
}
}
}
package com.hy;
public class Student {
private String name;
private int age;
public Student() {
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
}
List:
特点:
有序(存取元素一致)
存储的元素可以重复
List<E> list=new ArrayList<>();
特殊的成员方法:
list.add(int index,E element)//在指定的位置添加元素
如果添加位置前没有元素那就会报:IndexOutOfBoundsException
list.remove(int index)//删除指定索引元素,返回被删除的元素
list.get(int index)//获取指定位置的元素
list.set(int index,E element)//修改指定位置的元素,返回被修改的元素
List集合的遍历:
A:迭代器
Iterator it=list.iterator();
List中有一个特有的迭代器继承了Iterator
ListIterator<E>:
ListIterator<E>//列表迭代器
列表迭代器可以按任意方向遍历集合
Previous()返回列表前的一个元素
hasPrevious()判断迭代器逆向遍历中有没有元素
注意: 而且必须先顺序遍历集合才可以逆向遍历集合
B:普通for循环遍历
for(int i=0;i<list.size();i++){
list.get(i)
}
C:增强for//运来替代迭代器
但是集合不能为null会报错 NullPointerException
for (String s : list) {
System.out.println(s);
}
数据结构:
栈:
压栈 与 弹栈
类似弹夹 先进后出
队列:
先进先出 如排队
数组:
查询快,增删慢
链表:
查询慢,增删快
有一个链子把多个节点连接起来的数据
节点:由数组和地址组成
List:
ArrayList:底层是数组 查询快,增删慢
LinkedList:底层是链表 查询慢,增删快