集合快速入门

系列文章目录


目录

系列文章目录

文章目录

一、集合

1.集合框架

 2.为什么使用集合

二、Collection

1.Collection接口实现类的特点

 2.Collection接口中的常用方法

三、Collection 接口遍历元素

1.方式一:使用Iterator(迭代器)

2.使用Iterator重要细节

3.方式二:增强for

4.小练习

总结


一、集合

1.集合框架

1、集合主要分两组(单列集合、双列集合)

2、Collection 接口有两个重要的子接口 List 和 Set, 他们的实现子类都是单列集合,

  • 比如实现List接口的类:ArrayList、LinkedList、vector等
  • 实现Set接口的类:HashSet、TreeSet等

3、Map 接口的实现子类 是双列集合,存放 K-V

  • 实现Map接口的类:HashMap、TreeMap、Hashtable、Properties、LinkedHashMap

 2.为什么使用集合

 在学习集合之前我们存储多个数据使用的是数组

而在使用数组时,我们也可以发现,数组的使用有主要三点不足

  • 长度开始时必须指定,而且一旦指定,不能更改
  • 保存的必须为同一类型的元素
  • 使用数组进行增加元素的示意代码

应对业务需求,选择需要的集合,可以很好的解决数组的不足之处

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

 


二、Collection

1.Collection接口实现类的特点

public interface Collection<E> extends Iterable<E>

  • 有些Collection 的实现类,List可以存放重复元素,Set不可以
  • 有些Collection 的实现类,有些是有序的(List),有些不是有序的(Set)
  • Collection 接口没有直接的实现子类,是通过它的子类接口Set和List来实现的

 2.Collection接口中的常用方法

  • add:添加单个元素
  • remove:删除指定元素
  • contains:查找元素是否存在
  • size:获取元素个数
  • isEmpty:判断是否为空
  • clear:清空
  • addAll:添加多个元素
  • containsAll:查找多个元素是否都存在
  • removeAll: 删除多个元素

 

public static void main(String[] args){
//        以 ArrayList 为例
//        add:添加单个元素
        List list = new ArrayList();
        list.add("jack");
        list.add(10);// 存入整数,会有一个自动装箱的过程 将int类型的10 ,转成 Integer 本质:list.add(new Integer(10))
        list.add(true);// list.add(new Boolen(true))
        System.out.println("list" + list);
//         remove:删除指定元素
        list.remove(0);
        System.out.println(list);
        list.remove(true);
        System.out.println(list);
//        contains 查找元素是否存在
        System.out.println(list.contains("jack"));
//        size:获取元素个数
        System.out.println(list.size());
//        isEmpty:判断是否为空
        System.out.println(list.isEmpty());
//        clear:清空
        list.clear();
        System.out.println(list);

//        addAll:添加多个元素
        List list2 = new ArrayList();
        list2.add("西游记");
        list2.add("红楼梦");
        list.addAll(list2);
        System.out.println(list);
//        containsAll:查找多个元素是否都存在
        System.out.println(list.containsAll(list2));
//        removeAll: 删除多个元素
        list.removeAll(list2);
        System.out.println(list);

        /**
         * add:添加单个元素
         * remove:删除指定元素
         * contains:查找元素是否存在
         * size:获取元素个数
         * isEmpty:判断是否为空
         * clear:清空
         * addAll:添加多个元素
         * containsAll:查找多个元素是否都存在
         * removeAll: 删除多个元素
         * */
    }


三、Collection 接口遍历元素

1.方式一:使用Iterator(迭代器)

  • Iterator 对象称为迭代器,主要用于遍历Collection集合中的元素。
  • 所有实现了Collection 接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即:可以返回一个迭代器
  • Iterator 仅用于遍历集合,Iterator本身并不存放对象

2.使用Iterator重要细节

public static void main(String[] args) {
        Collection List = new ArrayList();
        List.add(new Book("三国演义","罗贯中",33.5));
        List.add(new Book("小李飞刀","古龙",32.9));
        List.add(new Book("红楼梦","曹雪芹",33.6));
//        System.out.println("List=" + List);
//        现在需要 遍历 List集合
//        1.先得到 List 对应的 迭代器
        Iterator iterat = List.iterator();
//        显示所有的快捷键的快捷键 ctrl + j
//        使用 while 循环遍历   快捷建 itit
        while (iterat.hasNext()){//判断是否还有数据
//            返回下一个元素,类型为OBject
            Object obj = iterat.next();
            System.out.println("obj=" + obj);
        }

//        细节:当退出while循环后,这时iterator 迭代器,指向最后的元素

//        如果希望再次遍历 需要重置迭代器
        iterat = List.iterator();
        System.out.println("第二次遍历");
        while (iterat.hasNext()) {
            Object obj2 =  iterat.next();
            System.out.println("obj2="+obj2);
        }



    }

}
class Book{ // 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 +
                '}';
    }
}

3.方式二:增强for

增强 for 循环 可以代替iterator迭代器,特点:增强 for 就是简化版的iterator, 本质不一样,只能用于遍历集合与数组

1. 基本语法

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

                访问元素

}

public static void main(String[] args){
        Collection col = new ArrayList();
        col.add(new Book("三国演义","罗贯中",33.5));
        col.add(new Book("小李飞刀","古龙",32.9));
        col.add(new Book("红楼梦","曹雪芹",33.6));
//        使用增强 for
//        底层仍然是迭代器
//        快捷键 I
        for (Object book : col){
            System.out.println("book="+book);
        }

    }

4.小练习

1.创建3个Dog{name,age}对象,放热到ArrayList中,赋给 List 引用

2.用迭代器和增强 for 循环两种方式来遍历

3.重写Dog 的toString方法,输出name 和 age

参考答案:
 public static void main(String[] args) {
        List List1 = new ArrayList();
        List1.add(new Dog("大黄",5));
        List1.add(new Dog("大白",3));
        List1.add(new Dog("小黑",6));
//          迭代器
        Iterator iterator = List1.iterator();
        while(iterator.hasNext()){
            Object ogj = iterator.next();
            System.out.println("ogj="+ogj);
        }
//        增强for循环
        for (Object obj : List1){
            System.out.println("obj="+obj);
        }


    }
}
class Dog {
    private String name;
    private int age;

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "name='" + name +
                ", age=" + age ;
    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值