集合
集合是指长度不定的一组元素(对象),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());
}
}
}
输出结果:
1
2
3
泛型
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());
}
}
}
运行结果:
3
7
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at fgb.TestForGenericity.main(TestForGenericity.java:13)
因为integer类型不能转化成String类型所以程序出错了