Collection 接口 (单值)

                Collection 类 

                                单值集合的最大父类

一、List接口

实现类 ArrayList,  Vector,  LinkedList。 

1.ArrayList

增删很慢,查找很快

2.vector

同步操作,线程安全

3.LinkedList

双向链表

Iterator 和 ListIterator 的用法


/**
 * 迭代器
 *      Iterator
 *      ListIterator
 */
public class Demo2 {
    public static void main(String[] args) {
        ArrayList<Integer> data = new ArrayList<>();
        data.add(1);
        data.add(2);
        data.add(3);
        data.add(4);
        data.add(5);

        Iterator<Integer> iter = data.iterator();
//        while(iter.hasNext()){
//            Integer next = iter.next();//下移并返回
//            System.out.println(next);
//        }


//        iter.next();
//        iter.remove();  //必须先用next()获取才能删除
//        System.out.println(data.size());

        ListIterator<Integer> iter2 = data.listIterator();
//        iter2.previous();  // 必须先往下才能往上
        iter2.add(100);   //  此时指针在第一个元素之前,因此add的值变为了第一个值,其他的往后顺延
        iter2.next();
        iter2.next();
        iter2.set(200);    //  可以设置值
        System.out.println();

        iter2.previous();
        iter2.previous();
        while(iter2.hasNext()){
            System.out.println(iter2.next());
        }

forEach  增强for循环 (自动使用最佳的迭代方法)

只能用于迭代数组 或者 集合(Collection下的集合)

/**
 * 增强for循环   forEach
 *      
 */
public class Demo3 {
    public static void main(String[] args) {
        int[] arr = {6,5,4,2,10,2};
        for (int data : arr) {
            System.out.println(data);
        }
        System.out.println("-----------------");

        ArrayList<String> data2 = new ArrayList<>();
        data2.add("12345");
        data2.add("54321");
        data2.add("67890");
        data2.add("09876");
        for (String s: data2) {
            System.out.println(s);
        }
    }
}

二、Set 接口

Set 也继承自Collection,这两个类都没用get方法来获得数据
需要用迭代器 或者用toArray() 转为数组
Set 是不包含重复元素的集合  包括null  

1.HashSet

//HashSet   有增加 删除  没有get
        //散列存储, 重复利用了双值哈希表 HashMap
        //无序存储,无法保证存储的顺序
        HashSet<String> hs = new HashSet<>();
        hs.add("锄禾日当午");
        hs.add("汗滴禾下土");
        hs.add("谁之盘中餐");
        hs.add("粒粒皆辛苦");
        //重复添加不会成功, add方法返回false
        Iterator<String> iterator = hs.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //遍历用forEach也行

2.TreeSet

 /**
         * TreeSet   有序的
         *  是按照自然顺序  而非  录入顺序
         */
        TreeSet<String> data = new TreeSet<>();
        data.add("A");
        data.add("D");
        data.add("C");
        data.add("B");
        for (String datum : data) {
            System.out.println(datum);
        }
        System.out.println((char)1);
        /*
        在存储自己定义的类时,会出现一些问题
        需要类实现 Comparable 接口,
        并实现其compareTo函数用来比较自定义对象的大小
        根据compare返回值 负数:this小  0:一样大  正数:this大
        来决定谁大谁小, 若是两个一样大 则不存
         */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值