java学习总结(16.07.18-16.07.21)集合与泛型

来源:互联网 发布:linux修改网络配置 编辑:程序博客网 时间:2024/06/05 15:31

集合

集合是指长度不定的一组元素(对象),java中集合有List,Set,Queue,Map四种。处理集合时需要用到集合类,而说到集合类,就得先从集合的借口说起

Collection接口

Collection接口是java.util包中集合的根接口。JDK中没有直接实现Collection接口的类,Collection有List,Set,Queue等子接口、而Collection接口中有一些用于操作集合的方法


boolean add(E e)  //向当前集合中加入元素e,加入成功则返回true,加入失败返回false

boolean addAll(Collection<? extends E> c) //将一个集合的所有元素加入到当前集合中,若加入空集合返回false

boolean remove(Object o)  //移除当前集合中指定的元素o,若o多次出现,则移除首次出现的o,移除成功返回true否则返回false

boolean removeAll(Collection<?> c)//  与remove方法同理

boolean isEmpty()//判断当前集合是否为空,若为空集合则返回true否则返回false

boolean isEmpty()  //将当前集合转化为对象数组并作为结果返回

void clear() //清空当前集合

boolean contains(Object o)  //判断集合是否包含有所指定的元素o,包含则返回true否则返回false

int size() //返回集合的长度(元素的个数)


List接口

List接口是Collection接口的一个子接口,List所操作的集合是有序且可重复的,List集合的元素都有对应的索引,List可以用到Collection的方法,其外,List也有自己的方法

void add(int index, E element) //将元素element加入到集合中指定的位置,index为索引,且从零开始

boolean addAll(int index,Collection<? extends E> c)  //将集合c中的所有元素加入到当前集合的指定位置

E remove(int index)  //移除索引所指位置的元素,返回结果为被移除的元素

E get(int index)  //返回集合中指定索引处的元素

int indexOf(Object o)  //返回指定元素o在集合中的索引值,若o不在集合中则返回-1

default void sort(Comparator<? super E> c)   //按照c指定的规则对集合进行排序,默认是进行升序排序


Set接口

Set接口是Collection接口的子接口,Set集合中的元素是无序且不可重复的

Set集合如何判断元素是否相同?

若两元素同时满足以下两个条件则认为这两个元素相同:

①调用equals方法返回true

②两元素的hashcode相同


Queue接口

Queue接口是Collection接口的子接口,为队列集合,有着先进先出的特点。但并不常用,这里不作详述。


Map接口

Map接口是独立于Collection接口的另一个接口。Map集合的元素有着键—值映射关系(key,value)。对于Map集合,key不可重复。

Map 集合的方法

V put(K key,V value)  //向集合中加入一对键值,返回值

V remove(K key)   //将key的一组键值从集合中移除,返回值,若集合中无对应的键则返回null

V remove(K key,V value)  //仅当键值相对应时,从集合中移除键值,不能移除返回null

V get(Object key)   //获取集合中指定键的值,若找不到键key则返回null

Set<K>   keySet()  //将集合中所有元素的键,以Set集合的形式作为方法返回值

int size()  //获取集合元素个数

boolean isEmpty()  //判断集合是否为空

void clear()   //清空集合


遍历集合——迭代器 Iterator

Iterator是一个依赖于Collection接口和Map接口的接口。Collection接口的所有实现类都实现了iterator()方法,该方法返回一个当前集合对应的一个实例,该实例为Iterator接口的直接间接实现类的实例,这些实例又称为迭代器,可用于遍历集合。 另外Iterator不可以遍历Map集合

Iterato的方法

boolean hasNext()//判断集合是否还有下一个元素,有则返回true,否则返回false

E next()   //返回集合中下一个元素


具体用法

package fgb;import java.util.List;import java.util.ArrayList;import java.util.Iterator;public class TestForList {public static void main(String[] args) {List<Integer> l=new ArrayList<Integer>();l.add(1);l.add(3);l.add(2);Iterator<Integer> iterator=l.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}}
输出结果:123


泛型

泛型粗略地说就是集合类型的尖括号,它规定了集合元素的类型。使得外部无法向集合中加入非指定类型的元素
繁星出现的原因:编译时,系统不会对集合的元素类型进行检查,若想集合中加入类型不一致的元素,那么程序运行时就有可能因为几何元素类型不符合要求而报错。
package fgb;import java.util.List;import java.util.ArrayList;public class TestForGenericity {public static void main(String[] args) {List strList=new ArrayList();strList.add("abc");strList.add("abcdefg");strList.add(100);for(int i=0;i<strList.size();i++){String str=(String)strList.get(i);System.out.println(str.length());}}}
运行结果:37Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Stringat fgb.TestForGenericity.main(TestForGenericity.java:13)
因为integer类型不能转化成String类型所以程序出错了
若一开始时2,将集合strList的元素限定为String类型那么就不会出现如上错误了

0 1
原创粉丝点击