集合进阶-----Collection单列:List

Collection集合概述和使用:
/*
        Collection集合概述和使用
        是单例集合的顶层接口,表示一组对象,这些对象也称为Collection的元素
        提供更具体的子接口(如set / list)实现

        Collection<E>   E - 此集合中元素的类型

        创建Collection集合的对象
            多态的方式
            ArrayList()
 */

import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo1 {
    public static void main(String[] args) {

        //创建Collection集合的对象
        Collection<String> c=new ArrayList<String>();
        //添加元素
        c.add("a");
        c.add("b");
        c.add("c");
        //输出集合对象
        System.out.println(c);



    }
}

 

Collection集合常用方法:
package 集合进阶.Collection单列;

import java.util.ArrayList;
import java.util.Collection;

/*
        Collection集合常用方法
            boolean add (E e)   添加元素
            bollean remove(Object o)    移除指定元素
            void clear​() 从此集合中删除所有元素(可选操作)
            boolean contains​(Object o) 如果此集合包含指定的元素,则返回 true 。
            boolean isEmpty​() 如果此集合不包含元素,则返回 true 。
            int size​() 返回此集合中的元素数。


 */
public class CollectionDemo2 {
    public static void main(String[] args) {

        Collection<String> c=new ArrayList<String>();

        //添加
        System.out.println(c.add("a"));//返回ture,添加元素肯定添加正确所以输出语句没必要写
        System.out.println(c.add("b"));
        c.add("c");//这样
        c.add("d");

        //移除
        System.out.println(c.remove("a"));//返回ture
        System.out.println(c.remove("v"));
        c.remove("c");

        //清除
//        c.clear();

        //判断元素存在
        System.out.println(c.contains("a"));

        //判断集合是否为空
        System.out.println(c.isEmpty());

        //长度
        System.out.println(c.size());

        System.out.println(c);
    }
}

 

Collection集合的遍历

Iterator:迭代器,集合的专用遍历方式
package 集合进阶.Collection单列;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
            Collection集合的遍历

            Iterator:迭代器,集合的专用遍历方式
            常用方法:
            boolean hasNext​() 如果迭代具有更多元素,则返回 true 。
            E next​() 返回迭代中的下一个元素。


 */
public class IteratorDemo {
    public static void main(String[] args) {

        //创建Collection集合的对象
        Collection<String> c = new ArrayList<String>();
        //添加元素
        c.add("a");
        c.add("b");
        c.add("c");

        //通过调用集合的Itertor()方法
        Iterator<String> it = c.iterator();

/*        System.out.println(it.next());
        System.out.println(it.next());
        System.out.println(it.next());
        System.out.println(it.next());*/

        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
    }
}


并发修改异常
ConcurrentModificationException:
package 集合进阶.Collection单列;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
        并发修改异常
        ConcurrentModificationException

        产生原因
        迭代器遍历过程中,通过集合对象修改了集合中的元素长度,
        造成了迭代器获取元素中判断预期修改值和实际修改值不一致

        解决方案
        用for循环遍历,然后用集合对象做对应的操作即可
 */

public class 并发修改异常 {
    public static void main(String[] args) {

        //创建集合对象
        List<String> list = new ArrayList<String>();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");

        //遍历集合,得到每一个元素,看有没有“world”这个元素,如果有,我就添加一个“javaee”元素
/*       Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String s = it.next();
            if (s.equals("world")) {
                list.add("javaee");
            }
        }*/

       for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (s.equals("world")) {
                list.add("javaee");
            }
        }
        System.out.println(list);
    }

}

 

List集合概述和特点:
package 集合进阶.Collection单列.List;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*
        概述:
        有序集合,用户可以精确控制每个元素的插入位置,用户也可以通过整数索引访问元素
        并搜集列表中的元素
        与Set集合不同,列表通常允许重复元素

        特点:
        有序:存储和取出的元素一致
        可重复:存储的元素可以重复
 */
public class List集合概述和特点 {
    public static void main(String[] args) {

        //创建集合对象
        List<String> list = new ArrayList<String>();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");

        list.add("world");

//        //输出集合
//        System.out.println(list);

        //迭代器的方式遍历
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            String s = it.next();
            System.out.println(s);
        }

    }

}

 

 

List集合特有方法:
package 集合进阶.Collection单列.List;
/*
      void add(int index,E element) 在此集合的指定位置插入指定元素
      E remove(int index)   删除指定索引处的元素,并返回
      E set(int index,E element)    修改并返回
      E get(int index)  返回

 */

import java.util.ArrayList;
import java.util.List;

public class LIst集合特有方法 {
    public static void main(String[] args) {

        //创建集合对象
        List<String> list = new ArrayList<String>();
        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");

        //插入
//        list.add(1,"javaee");
//        list.add(11,"javaeee");//IndexOutOfBoundsException

        //删除
//        list.remove(1);
//        System.out.println(list.remove(1));
//        System.out.println(list.remove(11));//IndexOutOfBoundsException

        //修改
//        list.set(1,"javaee");
//        System.out.println(list.set(1,"javaee"));
//        System.out.println(list.set(11,"javaeee"));//IndexOutOfBoundsException

        //返回
        System.out.println(list.get(0));
//        System.out.println(list.get(11));//IndexOutOfBoundsException

        //输出集合
        System.out.println(list);
    }

}

 

List集合子类的特点:
package 集合进阶.Collection单列.List;

import java.util.ArrayList;
import java.util.LinkedList;

/*
        常用子类:
        ArrayList:底层数据结构是数组,查询快,增删慢
        LinkedList:底层数据结构是链表,查询慢,增删快
 */
//完成存储字符串并遍历
public class List集合子类的特点 {
    public static void main(String[] args) {
        //创建集合对象ArrayList
        ArrayList<String> array = new ArrayList<String>();

        array.add("hello");
        array.add("world");

        for(String s : array) {
            System.out.println(s);
        }

        //LinkedList
        LinkedList<String> list = new LinkedList<String>();

        list.add("hello");
        list.add("world");

        for(String s : list) {
            System.out.println(s);
        }
    }
}

增强for:
package 集合进阶.Collection单列.List;
/*
        增强for:简化数组和Collection集合的遍历
            实现Iterable接口的类允许其对象成为增强型for语句的目标
            它是JDK5之后出现的,其内部原理是一个Iterator迭代器

        格式:
        for(元素数据类型 变量名:数组或者Collection集合){
                //在此处使用变量即可,该变量就是元素
        }
        范例:
        int[] arr={1,2,3,4}
        for(int i:arr){
            sout(i);
        }
 */

import java.util.ArrayList;
import java.util.List;

public class 增强for {
    public static void main(String[] args) {

        int[] arr ={1,2,3,4};
        for(int i:arr){
            System.out.println(i);
        }

        String[] strArray={"hello","world","java"};
        for(String s:strArray){
            System.out.println(s);
        }

        List<String> list = new ArrayList<String>();
        list.add("hello");
        list.add("world");
        list.add("java");
        for(String s:list){
            System.out.println(s);
        }

        //内部原理是一个Iterator迭代器
        for(String s:list){
            if(s.equals("world")){
                list.add("java");//ConcurrentModificationException
            }
        }
    }

}

 

 

ListIterator:列表迭代器
package 集合进阶.Collection单列.List;
/*
        ListIterator:列表迭代器
            通过List集合的listIterator()方法得到,所以说它是List集合特有的迭代器
            用于允许程序员沿任意方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置

        ListIterator中的常用方法
        E next()    返回迭代中的下一个元素
        boolean hasNext()   如果迭代具有更多的元素,则返回true
        E previous()    返回列表的上一个元素
        boolean hasPrevious()    如果此列表迭代器在相反的方向遍历列表是具有更多的元素,则返回true
        void add(E e)   将指定的元素插入列表
 */

import java.util.ArrayList;
import java.util.List;

public class ListIterator {
    public static void main(String[] args) {
        //创建集合对象
        List<String> list = new ArrayList<String>();

        //添加元素
        list.add("hello");
        list.add("world");
        list.add("java");

        //通过list集合的ListIterator()方法得到
/*        java.util.ListIterator<String> lit = list.listIterator();
        while (lit.hasNext()) {
            String s = lit.next();
            System.out.println(s);
        }
        while (lit.hasPrevious()){
            String s=lit.previous();
            System.out.println(s);
        }*/

        //获取列表迭代器
        java.util.ListIterator<String> lit = list.listIterator();
        while (lit.hasNext()) {
            String s = lit.next();
            if (s.equals("world")){
                lit.add("javaee");
            }
        }
        System.out.println(list);
    }

}

 

LinkedList集合特有功能:
package 集合进阶.Collection单列.List;
/*
        void addFirst​(E e) 在该列表开头插入指定的元素。
        void addLast​(E e) 将指定的元素追加到此列表的末尾。
        E getFirst​() 返回此列表中的第一个元素。
        E getLast​() 返回此列表中的最后一个元素。
        E removeFirst​() 从此列表中删除并返回第一个元素。
        E removeLast​() 从此列表中删除并返回最后一个元素。

 */

import java.util.LinkedList;

public class LinkedList集合特有功能 {
    public static void main(String[] args) {

        //创建集合对象
        LinkedList<String> LinkedList = new LinkedList<String>();

        LinkedList.add("hello");
        LinkedList.add("world");
        LinkedList.add("java");

        LinkedList.addFirst("javaee");
        LinkedList.addLast("javase");

       LinkedList.getFirst();
       LinkedList.getLast();

        System.out.println(LinkedList.removeFirst());
        System.out.println(LinkedList.removeLast());


        System.out.println(LinkedList);
    }
}

 

List集合存储学生对象并遍历:
package 集合进阶.Collection单列.List.List集合存储学生对象并遍历;

public class Student {
    String name;
    int age;

    public Student() {
    }

    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 Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
package 集合进阶.Collection单列.List.List集合存储学生对象并遍历;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*
        思路:
        定义学生类
        创建集合对象
        创建学生对象
        添加学生到集合
        遍历集合
 */
public class ListDemo {
    public static void main(String[] args) {

        //创建集合对象List
        List<Student> list = new ArrayList<Student>();

        Student s1=new Student("程序员1",30);
        Student s2=new Student("程序员2",31);
        Student s3=new Student("程序员3",32);

        list.add(s1);
        list.add(s2);
        list.add(s3);

        Iterator<Student> it = list.iterator();
        while (it.hasNext()) {
            Student s = it.next();
            System.out.println(s.getName()+","+s.getAge());
        }

        for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            System.out.println(s.getName()+","+s.getAge());

        }


    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放码过来a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值