集合、八股文面试、MySQL、学成在线

本文分享了一套力扣刷题的策略和技巧,涵盖了从简单到难题目的复习方法,详细解析了多种经典算法题,如链表、字符串操作、二叉树遍历等,并提供了代码示例。

一、集合

P499 集合介绍

数组不足之处:1.数组长度必须指定,一旦指定,不能修改。2.数组内的元素必须是同一类型。3.使用数组增加/删除元素的示意代码,比较麻烦。

集合的优点:1.可以动态保存任意多个对象,使用比较方便。2.提供了一系列方便的操作对象的方法:add、remove、set、get等。3.使用集合添加、删除新元素的示意代码。

P500 集合体系图

集合主要分为2组:

1.单列集合(在集合里放单个元素)

Collection里面有2个重要的子接口list和set。

2.双列集合(在集合里放键值对元素)

P501 Collection方法

public interface Collection<E> extends iterable<E>

1.collection实现子类可以存放多个元素,每个元素可以是Object

2.有些Collection的实现类,可以存放重复元素。

3.List是有序的,Set是无序的。

4.Collection接口没有直接实现类,是通过子接口Set和List来实现的。

P502 迭代器遍历

1.Iterator对象成为迭代器,用于遍历Collection集合中的元素。

2.所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即返回一个迭代器。

3.Iterator用于遍历集合

iterator.hasNext()可以判断是否有下一个元素,iterator.next()可以获取下一个元素。

public class Main {
    public static void main(String[] args) {
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",10.1));
        col.add(new Book("小李飞刀","古龙",5.1));
        col.add(new Book("红楼梦","曹雪芹",34.6));
        Iterator iterator = col.iterator();
        while(iterator.hasNext()){//判断迭代器是否为空
            Object obj = iterator.next();
            System.out.println(obj);
        }
        iterator = col.iterator(); //重置迭代器
        while(iterator.hasNext()){
            Object obj = iterator.next();
            System.out.println(obj);
        }
    }
}

class Book{
    private String name;
    private String author;
    private double price;
    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public String getAuthor() {return author;}
    public void setAuthor(String author) {this.author = author;}
    public double getPrice() {return price;}
    public void setPrice(double price) {this.price = price;}
    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

P503 集合增强for

语法如下:

for(元素类型 元素名:集合名或数组名){
      访问元素
}

 增强for的底层仍然是迭代器,能够遍历集合和数组。

P505 List接口方法

List接口基本介绍:

1.往list集合中添加的元素是有序的,可以理解为队列,先进先出。

2.list集合里面的元素可以重复。

方法:

list.indexOf(对象名称)   可以返回该对象所在位置

list.add(下标,对象名称)   可以在下标的位置插入对象,原本的对象后移

list.set(下标,对象名称)  可以将下标位置的元素改为新的对象

list.subList(开始位置下标,结束位置下标)   可以返回开始到结束的对象,前闭后开,取不到结束位置

P508 List排序练习

public class Main {
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add(new Books("红楼梦","曹雪芹",100));
        list.add(new Books("西游记","吴承恩",10));
        list.add(new Books("水浒传","施耐庵",9));
        list.add(new Books("三国演义","罗贯中",80));
        sort(list);
        for (Object o :list) {
            System.out.println(o);
        }
    }
    public static void sort(List list){
        for(int i=0;i<list.size()-1;i++)
            for(int j=0;j<list.size()-1-i;j++){
                //取出对象Book
                Books books1 = (Books) list.get(j);
                Books books2 = (Books) list.get(j + 1);
                if(books1.getPrice()> books2.getPrice()){
                    list.set(j,books2);
                    list.set(j+1,books1);
                }
            }
    }
}

class Books{
    private  String name;
    private String author;
    private double price;
    public Books(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }

    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
    public String getAuthor() {return author;}
    public void setAuthor(String author) {this.author = author;}
    public double getPrice() {return price;}
    public void setPrice(double price) {this.price = price;}
    @Override
    public String toString() {return "名称:"+name+"\t\t价格:"+price +"\t\t作者:"+author;}
}

P509 ArrayList注意事项

ArrayList里面可以放入空值。

ArrayList是

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值