数组和集合(二)

来源:互联网 发布:公司统计所用软件 编辑:程序博客网 时间:2024/06/05 04:13

集合数组都是用来存储数据的,数组本身可以存储数据了,为什么还要学习集合呢?

集合定义:集合像一种容器,可以存储、获取、操作数据对象的容器。

数组有一定的弊端,所以我们用集合来克服数组的不足:数组的长度不可改变,这一点一定和c++区分出来,刚学习c++时,有一种动态数组,其长度是可以申请改变的,而java中数组的长度就是固定的,数组没有提供可以查看数组中有效元素个数的办法


一:集合的特点:

①:集合的长度是可以改变的

②:集合可以存储任意类型的对象

③:集合只能存储对象:


二:集合的框架:

java.util.Collection:集合层次的根接口

         java.util.List接口:有序的,能重复

                     ArrayList:采用的是数组结构的集合:查询时多用ArrayList

     LinkedList:采用的是链表结构。增删时用

Vector:是线程安全的,效率低所以用的很少

 java.util.set 接口:无序的,不能重复

HashSet:是set接口的典型实现类,采用Hash算法,判断元素是否存在了,原理是比较hashCode值是否已经存在,若不存在直接存储,若hashcode值已经存在了,再通过比较equals()比较对象的内容:

TreeSet:拥有指定排序方式

自然排序(comparable);

①:需要TreeSet集合的类实现Comparable接口:

②:需要实现接口的compareTo(Object o1)方法

定制排序(Comparator):

①:声明一个类实现Comparator接口

②:实现接口的compare(Object o1,Object O2)

上面我们先说的是List和Set集合的框架,Map 的过会单独再说

三:集合有了,那怎么遍历集合呢?

先构造一个集合:

List<String> list =  new ArrayList<>();

list.add("a");

list.add("b");

list.add("c");

list.add("d");

list.add("e");

①:增强for

for(String s :list){

syso(s);

}

②:Iterator迭代器:

Iterator<String> it =list.Tterator();

while(it.next()){

String str = it.next();

syso(str);

}

}

③LIstIterator:列表迭代器,是List特有的迭代器

ListIterator <String> li = list.listIterator;

while(it.Next()){

String s =  li.next();

}

}

0 0
原创粉丝点击