集合专题(源码警告)

1、Collection 接口的实现子类的常见方法和两种遍历方式

package Collection;

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

public class CollectionIterator {
    public static void main(String[] args) {
        Collection list = new ArrayList();
        list.add(new Book("三国","罗",10.2));
        list.add(new Book("西游","好",11.2));
        list.add(new Book("三","王",12.2));
        Iterator iterator = list.iterator();
        while(iterator.hasNext()){//判断集合内是否还有数据
            Object obj = iterator.next();//返回的是Object类型
            System.out.println(obj);
            //快捷键itit。
        }
        //当退出while收iterator,就指向最后的元素,要想重新遍历值的话,就需要重置 我们的迭代器
        System.out.println("重新遍历");
        iterator = list.iterator();//再次指向最前面
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
        //增强for循环。
        for (Object o :list) {
            System.out.println(o);
        }//也可以用在数组上,增强for的底层依然是iterator

    }
}
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;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", 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;
    }
}

2、

package Collection;

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

public class List_ {
    public static void main(String[] args) {
        //list集合类中元素有序(添加顺序和去除顺序一样,而且可以重复)
        List list = new ArrayList();
        list.add("jack");
        list.add("xsm");
        list.add("wgs");
        list.add("tom");
        // void add(int index, Object ele):在 index 位置插入元素
        // boolean addAll(int index, Collection eles):从 index 位置开始将 eles 中的所有元素添加进来

        System.out.println( list.indexOf("tom"));
        System.out.println("list = " + list);
        System.out.println(list.lastIndexOf("tom"));
        //既然顺序都一样了,那么我们就可以知道其有对应的索引的。
        System.out.println(list.get(2));
        list.remove("jack");
        list.set(1,"xgs");//就是将索引为1的位置替换成xgs,要是给一个不存在的index的话就会产生异常。
        // List subList(int fromIndex, int toIndex):返回从 fromIndex 到 toIndex 位置的子集合
        List list1 = list.subList(0, 2);//放回的值是:左闭右开的值
        //list的实现子类很多个,我们只需要知道是ArrayList、linkedList、Vector
        //常见的方法:
    }
}

3、

package Collection;

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

public class Exercise {
    public static void main(String[] args) {
       List list = new ArrayList();
        for (int i = 0; i < 12; i++) {
            list.add("hello" + i);
        }
        System.out.println("list" + list);
        list.add(1,"hsp");
        list.get(4);//获取第五个元素
        list.remove(5);//第六个元素,索引为5.
        list.set(6,"三国");
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
        

    }
}

总结:list的实现子类也可以用这些上述遍历方法。


对list中对象的某些值进行排序,向下转型


package Collection;

import Gather.list;

import java.util.ArrayList;

public class E1 {
    public static void main(String[] args) {
        @SuppressWarnings({"all"})
        ArrayList list = new ArrayList();
        list.add(new Book("三国","罗",12.5));
        list.add(new Book("西游","罗",1.5));
        list.add(new Book("水浒","罗",2.5));
        bubble(list);
        for (Object o :list) {
            System.out.println(o);
        }

    }
    public static void bubble(ArrayList list){
        //冒泡排序
        //list.size(),把他单独成一个变量
        //listsize = list.size().
        for (int i = 0;i < list.size() - 1;i++){
            for(int j = 0;j < list.size() - 1 - i;j++){
                Book book1 = (Book)list.get(j);
                Book book2 = (Book)list.get(j + 1);
                if (book1.getPrice() > book2.getPrice()){
                    list.set(j,book2);
                    //集合的交换是set
                    list.set(j + 1,book1);
                }
            }
        }
    }
}
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;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", 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;
    }
}

注意事项:

  • ArrayList是可以放null的。还可以放多个null。
  • 底层是用数组实现的。
  • ArrayList是线程不安全的(没有synchronized),所以说他的效率比较高。
  • 在多线程的情况下,不适用。

 Arrays.copyOf(arr,length);我把他看成是拉长的操作。//保护原来的数据。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值