集合上

集合:
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:底层是链表 查询慢,增删快

posted @ 2020-07-08 11:41  小胡code  阅读(104)  评论(0编辑  收藏  举报