day14-java-集合

day 14

一.集合的第一种遍历

1.将集合转换为数组:(一般不常用)

2.语法::Object[] toArray()

  //第一种集合遍历
        Collection col = new ArrayList();
        col.add("张三");
        col.add("李四");
        col.add("王五");
        //转换为数组
        Object[] obj = col.toArray();
        for (int i=0;i<obj.length;i++){
            System.out.println(obj[i]);
        }
二.集合第二种遍历方式

1.将集合转换为迭代器来进行遍历

语法:Iterator iterator()

方法的名称方法的描述
boolean hasNext()判断是否有下一个元素
E next()返回的迭代器中下一个元素
void remove()删除迭代器中最后一个元素
System.out.println("集合第二种遍历");
        Collection col01 = new ArrayList();
        col01.add("张三");
        col01.add("李四");
        col01.add("王五");
        //转换为迭代器
        Iterator iter = col01.iterator();
        //使用while循环
        while (iter.hasNext()){
            Object obj01 = iter.next();
            System.out.println(obj01);
        }
三.集合的第三种遍历方式
1.使用增强for循环
2.语法:
	 for(集合|数组元素的数据类型 变量名 : 需要遍历集合|数组){
	 	变量名 就是每次得到集合|数组中元素 
	 }
3.增强for循环的底层也是使用迭代器来进行循环的
System.out.println("集合第三种遍历");
        Collection col02 = new ArrayList();
        col02.add("张三");
        col02.add("李四");
        col02.add("王五");
        //Object是col02的数据类型,没有出现,统一为Object,obj02自己命名  col02需要遍历的集合
        for (Object obj02:col02){
            System.out.println(obj02);
        }
四.案例

代码-新闻类

package com.qf.lt.oop02;

import java.text.SimpleDateFormat;
import java.util.Date;

public class News {
    private int nid;
    private String title;
    private String author;
    private Date createtime;

    public News() {
    }

    public News(int nid, String title, String author, Date createtime) {
        this.nid = nid;
        this.title = title;
        this.author = author;
        this.createtime = createtime;
    }

    public int getNid() {
        return nid;
    }

    public void setNid(int nid) {
        this.nid = nid;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    @Override
    public String toString() {
        return "News{" +
                "nid=" + nid +
                ", title='" + title + '\'' +
                ", author='" + author + '\'' +
                ", createtime=" + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()) +
                '}';
    }
}

代码-测试

package com.qf.lt.oop02;

import java.util.*;

public class Test {
    public static void main(String[] args) {
        //实例化集合
        Collection col = new ArrayList();

        News n1 = new News(101,"快来帮你","张三", new Date());
        News n2 = new News(102,"别扭的是否","李四", new Date());
        News n3 = new News(10,"v阿瑟东iv的","王五", new Date());

        col.add(n1);
        col.add(n2);
        col.add(n3);

        //第一种遍历:数组
        Object[] ojb01 = col.toArray();
        for (int i=0;i< ojb01.length;i++){
            System.out.println(ojb01[i]);
        }

        //第二钟:迭代器
        System.out.println("****************");
        Iterator iter = col.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }

        //第三钟:增强for循环
        System.out.println("****************");
        for (Object ob:col){
            System.out.println(ob);
        }

    }
}

五.迭代器处理原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHBsUrLc-1642682402005)(C:/Users/%E6%82%B2%E9%99%8C/AppData/Roaming/Typora/typora-user-images/image-20220120195403187.png)]

六.List接口
1.概念:List是接口,不能实例化  只能实例化实现类
2.特点:有序的 存的顺序与取的顺序是一样的 可以重复 也是设置null元素
3.实现类:ArrayList LinkedList Vector
4.常用的方法:带索引的方法
方法名称方法描述
void add(int index, E element)在列表指定位置插入元素
E get(int index)返回列表中指定位置的元素
ListIterator listIterator()转为迭代器
E remove(int index)根据索引来删除元素
E set(int index, E element)根据索引来修改元素
package com.qf.lt.oop03;

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

public class Test {
    public static void main(String[] args) {
        List li = new ArrayList();
        li.add("张三");
        li.add("张三丰");
        li.add("张学良");
        li.add("张三丰");

        //使用for循环
        for (int i=0;i< li.size();i++){
            String s =(String) li.get(i);
            if (s.equals("张三")){
                li.add("无极");
            }
        }
        System.out.println(li);


        //使用ListIterator list迭代器
        ListIterator iter = li.listIterator();
        while (iter.hasNext()){
            String s = (String) iter.next();
            if (s.equals("张三")){
                iter.add("张无忌");
            }
        }
        System.out.println(li);
        //修改元素
        li.set(2,"张作霖");
        System.out.println(li);
        //根据索引移除元素
        li.remove(3);
        System.out.println(li);
        //删除指定元素
        li.remove("张三丰");
        System.out.println(li);
    }
}

七.第四种遍历方法(有序 有索引)
package com.qf.lt.work01;

import java.sql.Array;
import java.util.*;

public class Work01 {
    public static void main(String[] args) {
        //实例化对象
        Student stu1= new Student("张三",15,'男');
        Student stu2= new Student("李四",13,'女');
        Student stu3= new Student("王五",25,'男');

        List li=new LinkedList();
        li.add(stu1);
        li.add(stu2);
        li.add(stu3);

        for (int i=0;i< li.size();i++){
            //通过索引来获取元素
            Object obj = li.get(i);
            System.out.println(obj);
        }
    }
}

八.案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lq3t0LHj-1642682402007)(C:/Users/%E6%82%B2%E9%99%8C/AppData/Roaming/Typora/typora-user-images/image-20220120202412609.png)]

package com.qf.lt.work01;

import java.sql.Array;
import java.util.*;

public class Work01 {
    public static void main(String[] args) {
        //实例化对象
        Student stu1= new Student("张三",15,'男');
        Student stu2= new Student("李四",13,'女');
        Student stu3= new Student("王五",25,'男');

        List li=new LinkedList();
        li.add(stu1);
        li.add(stu2);
        li.add(stu3);

        //记录索引
        int index = 0;
        int age=0;
        for (int i=0;i< li.size();i++){
            //通过索引来获取元素
            Object obj = li.get(i);
            Student st = (Student) obj;
            if (age< st.getAge()){
                age= st.getAge();
                index = i;
            }
        }
        ((Student)li.get(index)).setName("小猪佩奇");
        System.out.println(li);
    }
}

九.ArrayList
1.ArrayList是List接口的实现类
2.ArrayList底层是以数组的方式进行存储的   特点:查询快  增删慢
3.此实现不是同步的 多线程中不安全
4.分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JN16f30g-1642682402008)(C:/Users/%E6%82%B2%E9%99%8C/AppData/Roaming/Typora/typora-user-images/image-20220120202818076.png)]

十. LinkedList
1.是接口List的实现类
2.以链表的方式来进行存储,特点:查询慢  增加删除快
3.此实现不是同步的 多线程中不安全
4.分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eGIQnDyP-1642682402008)(C:/Users/%E6%82%B2%E9%99%8C/AppData/Roaming/Typora/typora-user-images/image-20220120203135466.png)]

常用方法:

方法名称方法描述
public void addFirst(E e)将指定元素插入此列表的开头
public void addLast(E e)将指定元素添加到此列表的结尾
public E getFirst()返回此列表的第一个元素
public E getLast()返回此列表的最后一个元素
public E removeFirst()移除并返回此列表的第一个元素
public E removeLast()移除并返回此列表的最后一个元素

测试类:

package com.qf.lt.oop05;

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

public class Test {
    public static void main(String[] args) {
        arraysList();
        linkesList();
    }



    public  static void arraysList(){
        ArrayList list = new ArrayList();

        for (int i=0;i<=1000000;i++){
            list.add(i);
        }
        long start = System.currentTimeMillis();
        for (int i=0;i<=1000000;i++){
            list.get(i);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start);
    }

    public  static void linkesList(){
        LinkedList list = new LinkedList();

        for (int i=0;i<=1000000;i++){
            list.add(i);
        }
        long start = System.currentTimeMillis();
        for (int i=0;i<=1000000;i++){
            list.get(i);
        }
        long end = System.currentTimeMillis();
        System.out.println(end-start);
    }
}

十一.Set
1.Set两个接口的实现类 HashSet  TreeSet
2.特点:
	元素不能重复
	无序 没有顺序
	没有索引
package com.qf.lt.oop06;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        //实例化
        Set set = new HashSet();

        set.add("水煮牛蛙");
        set.add("清蒸牛蛙");
        set.add("牛蛙火锅");

        //遍历:增强for循环
        for (Object obj:set){
            System.out.println(obj);
        }
        //使用迭代器
        System.out.println("******************************");
        Iterator iter  = set.iterator();
        while (iter.hasNext()){
            System.out.println(iter.next());
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个胖小白

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

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

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

打赏作者

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

抵扣说明:

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

余额充值