集合

集合:是数据存储的容器;长度可变,存放的是对象的引用(哈希值,即地址值),并非实际的基本数据类型;

汇总

一、Collection接口

是集合类的根接口,java中没有提供这个接口的直接实现类,但是却让其被继承产生了两个接口Set和List。

Set中不能包含重复的元素;(无序,不重复)
List是一个有序的集合,可包含重复元素,提供按索引访问方式(有序、可重复)
存放有序对象,可重复;List关注索引,查询速度快,因为往list集合里插入或删除,伴随着后面数据的移动,所以插入删除速度较慢。
比较

collection方法:
1、增
boolean add(Object o);
boolean addAll(Collection<?> c);
2、删
void clear(Object o);
boolean remove(Object o);
boolean romoveAll(Collection<?> c);
3、判断
boolean contains(Object o);
boolean containsAll(Collection<?> c);
4、迭代器
Iterator<E> iterator();
5、交集
boolean retainAll(Collection<?> c);//交集元素相对于集合元素是否发生改变
6、查看
int size(Object o);//集合元素的个数
7、转化
Object[] toArray(Object o);//将集合转为字符串
List方法:
1void add(int index,E element)角标
2boolean addAll(int index,Collection c)
3、E get(int index)//根据角标获取值
4int indexOf(Object o)//第一次出现的
5int lastIndexOf()
6、ListIterator<E> listIterator() //
7、List<E> subList(index,end);截取
8、E set(index,E);//替换
9、E remove();//返回集合元素
集合遍历:
Collection coll = new ArrayList();
        coll.add(123);
        coll.add(12.3);
        coll.add("你好");
1、以字符串直接输出
System.out.println(coll);
2、转为数组
Object obj = coll.toArray();
for(Object o:obj){
    Student stu = (Student)o;
    System.out.println(stu.name);
}

3、迭代器遍历
a)Iterator:迭代输出
b)ListIterator:Iterator是子接口,专门用于List内容输出。

Iterator it = coll.iterator();
while(it.hasNext()){
    Object o = it.next();
    System.out.println(o);
}

二、Map接口

与collection接口没有关系,相互独立。Map包含key-value对。Map只能有唯一的key,但可以包含相同的value。

HashMap是常用的Map,根据key键的Hashcode存储数据,根据key可以直接获取它的值(value=get(key)),具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。因为键对象不可重复,所以HashMap最多只允许一条键Null,是非线程同步。
Hashtable是hashMap的线程安全版,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable写入比较慢,不允许记录null。
LinkHashMap保存记录的插入顺序,比HashMap慢,有HashMap全部特性。
TreeMap实现SortMap接口,能够把它保存的记录根据键排序(自然顺序),也可以指定排序的比较器。不允许key为空,非线程同步。

Map方法:
1   增 :V put(K key,V value)将值和键关联
2   判断:boolean containsKey(Object key)
3       boolean containsValue(Object Value)
4   视图:Set<Map.Entry<K,V>> entrySet() 返回键值对set视图
    Set<K> keySet() 返回键的set视图
    Collection<V> values() 返回value值的collection视图
5  查看:int size() 查看集合里键值对数量
6  获取:V get(key) 从key获取value值

比较

Vector和ArrayList:
1vector是线程同步的,而ArrayList是线程异步,不考虑线程,ArrayList效率高。
2、如果集合中元素数目大于目前集合数组的长度,vector增长率为目前数组100%,
而ArrayList增长率为目前数组长度的50%,如果在集合中使用数据量比较大的数据,用vector有优势。
3、如果查找一个指定位置数据,两者使用时间是相同,如果频繁访问数据,这两个都可以。
而如果移动一个指定位置会导致后面元素都发生移动,要考虑linklist。
ArrayList和LinkedList
1、ArrayList是实现基于动态数组的数据结构,LinkedList基于链表的数据结构。
2、对于随机访问getset,ArrayList优于LinkedList,因为LinkedList要移动指针。
HashMap与TreMap
1、HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着
某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
2、在Map中插入、删除定位元素,hashmap是最好的选择。但如果您要按照自然顺序和自定义
顺序TreeMap是最好的选择。使用HashMap要求添加的键类明确定义hashcode()equals()的实现。
两个map中元素一样,顺序不一样,导致hashcode()不一样。

三、迭代器

所有的集合类都实现了Iterator接口,这是遍历集合中元素的接口,主要包含方法:

1、hasNext()是否还有下一个元素
2、next()返回下一个元素
3、remove()删除当前元素

四、工具类

collections :是操作collection的工具类
     方法:
      1、二分查找,在list集合里查找对象
     int binarySearch(list,Object);
     2、反转集合元素
      void reverse(List )
     3、重新排序:将list集合顺序打散
      void shuffle(List)
     4、排序:将list集合元素按照自然顺序进行排序
      sort(List)

泛型

在一个集合里全部存储字符串,遍历打印
* 假使,不小心存入一个int类型的数据–运行时会出现强制转化错误!

泛型:<类型>—规定只能存储指定类型
1、将运行时的错误提前到编译时发现
2、规定集合里存储的字符串
3、在自定义类中使用
4、方法上 修饰符<类> 返回值类型 方法名
泛型里的类型不能是基本数据类型,需要的是基本数据类型的包装类integer
5、接口上
interface 接口名<类型>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值