Java - 集合

2018-05-30  本文已影响5人  sunboximeng

集合与数组的区别:

集合分类:

1. 单列集合:Collection

注意:List <--> Set、数组 <--> 链表 都是相反的关系。

2. 双列集合:Map

key不可以重复,value可以重复。因为这就是数学里的映射,允许多对一,不允许一对多!

字符串(特殊的集合)

单列集合Collection API

Object[ ] toArray()方法注意事项:

public static void main(String[] args) {

        Collection<String> kartRider = new ArrayList<>();
        kartRider.add("SSS");
        kartRider.add("XX");
        kartRider.add("Owen");

//      运行时异常:ClassCastException
//      集合中的元素存在子父类关系,不代表集合之间存在子父类关系。  
//      只能对集合中的元素进行cast。
//      String[] kartRiderArray = (String[]) kartRider.toArray();
        Object[] kartRiderArray = kartRider.toArray();

        for (int i = 0; i < kartRiderArray.length; i++) {
            System.out.println( (String)kartRiderArray[i].length() );
        }

    }

还有一个重载方法<T> T[] toArray(T[] a)可以匹配类型

public static void main(String[] args) {

        Collection<String> kartRider = new ArrayList<>();
        kartRider.add("SSS");
        kartRider.add("XX");
        kartRider.add("Owen");

        String[] kartRiderArray = kartRider.toArray(new String[](kartRider.size()));

        for (int i = 0; i < kartRiderArray.length; i++) {
            System.out.println(kartRiderArray[i].length());
        }

    }

迭代器的使用分两步

public static void main(String[] args) {

        Collection<String> kartRider = new ArrayList<>();
        kartRider.add("SSS");
        kartRider.add("XX");
        kartRider.add("Owen");

//      调用集合方法获取集合的迭代器对象
        Iterator<String> it = kartRider.iterator();
//      调用迭代器方法进行遍历
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
Collections工具类

提供了一些常用的处理集合的方法:sort、shuffle、binary search、reverse、addAll(懒人福音,把一个集合添加到另一个集合里面(批量添加,或者把一个无序集合转换成一个有序集合),省的遍历)。
数组的工具类 Arrays 也有 sort 方法。

List
List API

具有跟索引相关的增删改查方法。

List.of 像是数组的静态初始化,返回一个长度不可变的List。利用addAll方法再把它添加到别的可变的列表中。

哈希值其实就是一种编号方式,就像利用地理位置、出生日期等属性为一个人编身份证号码一样,尽量保证唯一性。编号之后对数组长度取余,就得到存储地址。

Set

虽然没有索引,但是可以通过计算或比较get到元素。

Map API

注意:put方法具有添加和覆盖的功能,所以不叫add。

斗地主给牌排序:给牌按照大小编号后,利用HashMap或者parallel array。

反向输出

stack可以用来反向输出。
LinkedList在头上面加,然后输出的时候就会反向输出。
i -- 遍历也会实现反向输出。
集合元素倒序输出 Collections工具类的reverse
字符串倒转 StringBuider reverse 。利用构造器可以把String转化为StringBuider 。

上一篇 下一篇

猜你喜欢

热点阅读