集合的概念:一种工具类,像是容器,储存任意数量具有相同属性的对象
hash码时无序的,但查找是最快的。Array内存地址连续(数据查找更快) Linked内存地址不连续(数据更新更快)
1、List接口
List是有序并且可以重复的集合称为序列
取得List元素的方法
①List长度 size()遍历,get(序号);
②通过迭代器来遍历List //所有实现了Collection接口的类都有一个iterator()方法
iterator 例:ArrayList a;
Iterator it = a.iterator;
while(it.next()){
Course cr = (Course) it.next();
}
Arrays.asList();将数组转为List
- 增:add(int index,E element)//将指定的元素插入此列表中的指定位置。
addAll(int index, Collection<? extends E> c) // 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
- 删:remove(int index) // 移除此列表中指定位置上的元素。
remove(Object o) //移除此列表中首次出现的指定元素(如果存在)
removeAll(Collection<?> c) //移除此 collection 中那些也包含在指定 collection 中的所有元素
- 改:set(int index,E element)
- 查:get(序号);
判断一个元素出现的位置indexOf(Objext o)。
在删除int数据类型的时候,若不是利用索引来删除的话,则需 remove(new integer(int x))
2、Set接口
Set是无序且不可以重复的集合,被称为集
Set set = new HashSet();
- 增:set.add();
- 删:set.remove();
- 改:Set 无set()方法// 因为List有序,Set无序
- 查:循环遍历Set中的元素只能用Iterator或ForReach,不能用get()
set.isEmpty();//判断是否为空 也可使用set.size()方法
长度size()
Set中添加对象,无论添加多少次,只保留第一次添加的对象
3、Map接口
Map出现的原因:Hashset没有索引,不方便通过索引来对容器进行操作
Map其实就是在set的基础上加了索引,并且这个索引可以自己定义
Map是以key-value(键-值对)的方式保存的,值可以重复,但索引不能重复,每个键最多映射一个值
Entry代表一对key-value,它是Map的属性(成员变量)
Map的泛型,形式如:Map< k , v >
HashMap类
HashMap类中的Entry类是无序排列的。
key值和value值都可以为null,但一个HashMap只能有一个Key值为null的映射
- 增:put(K key, V value) //在此映射中关联指定值与指定键。
- 删:remove(Object key) //从此映射中移除指定键的映射关系
- 改:put(K key, V value)
- 查:entrySet() //返回此映射所包含的映射关系的 Set 视图。
keySet() //返回此映射中所包含的键的 Set 视图。
values() //返回此映射所包含的值的 Collection 视图。
values() // 返回此映射所包含的值的 Collection 视图,没有则返回null。
例:
Map<String,String> map = new HashMap<String,String>();
map.set(“1”,”one”);
map.set(“2”,”two”);
map.set(“3”,”three”);
map.set(“4”,”four”);
Set<Map.Entry<String,String>>entrys = map.entryset();
for(Iterator<Map.Entry<String,String>> i = entrys.iterator();i.hasNext();){
Map.Entry<String,String> entry = i.next();
System.out.println(entry.getvalue());
4、泛型
指定当前的容器中只能放置哪种类型,泛型集合可以添加泛型的子类型的对象实例
泛型中的限定类型不能使用基本数据类型,可以使用包装类限定允许存入的基本数据类型
List<Person> list = new ArrayList<Person>();
5、包含
Collection中的contains
List/Set中包含某元素:
contains(Object o) // 如果 包含指定的元素,则返回 true。
containsAll(Collection<?> c) // 如果包含指定 collection 的所有元素,则返回 true。
List中课程的位置:
indexOf(Object o) // 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
lastIndexOf(Object o) // 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
Map中:
containsKey(Object key) // 如果此映射包含指定键的映射关系,则返回 true。
containsValue(Object value) //如果此映射将一个或多个键映射到指定值,则返回 true。
6、Collections工具类
java.util.Arrays 操作数组的各种静态方法
java.util.Collection 操作集合对象的工具类
Collections.sort(List<T> list) // 必须实现Compareble接口,根据元素的自然顺序 对指定列表按升序进行排序。如果是String类型的话,先看首字母然后依次看第二个,第三个。。。排列顺序:数字0~9,大写字母A~Z,小写字母a~z;
Comparable接口//定义默认的排序规则 其实现类要实现compareTo()方法,返回正数则表示大,负数则表示小,0表示相等
Comparator接口//定义临时的比较规则 其实现类要实现compare()方法
一个无从安放的函数
Random random() = new Random();
random.nextInt(100);//随机生成一个100以内的整数