@[TOC
]
Collection接口 (单列集合)
1.Collection是单列集合里面最顶层的接口,定义了一些通用的方法
2.add(E e)添加元素 clear()清空元素 remove(E e)删除元素 size()元素数量;
3.toArray()集合转数组 contains(E e)判断元素是否包含 isEmpty()判断集合元素是否为空
List接口
- 特点:有索引 是可以准确地操作元素
- 元素有序,存储及取出时顺序一致
- 元素是可以重复的,通过equals()去比较是否重复
- 利用索引 定义一些特殊的方法
- get(int index,E e)获取指定位置的元素;remove (int index)移除指定位置的元素;
- add(int index,E e)将元素添加到指定位置;set (int index,E e)用元素替换指定位置的元素
ArrayList实现类
数组结构 ;数组 ;
特点 :查询快 增删慢 主要用于查询遍历数据,为最常用的集合之一 ;
底层分析 :数据结构是有序的元素序列,在内存中开辟一段连续的空间,在空间中存放元素,每个空间都有编号,通过编号可以快速的找到相应的元素,所以查询速度快。
LinkedList实现类
数据结构:双向链表
特点:查询慢 增删快
List集合的三种遍历方式
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
//循环随机输入1到10以内的数
for (int i=0;i<10;i++) {
list.add((int)(Math.random()*11));
}
//遍历输出
//方式1 for循环遍历输出
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//方式2 迭代器遍历
Iterator<Integer> it =list.iterator();
while (it.hasNext()){
int str=it.next();
System.out.println(str);
}
//方式3 foreach遍历
for (Integer in:list) {
System.out.println(in);
}
}
Map接口
-
双列集合:Map集合存储的元素都是成对出现的,Map元素的键是唯一的,值是可以重复。把这样的元素理解为:夫妻对
-
Collection集合存储的元素都是单独出现的,Collection接口下面的Set是元素唯一的, List集合中元素是可以重复的
-
底层是哈希表数据结构,线程是不同步的,可以存入null键,null值。要保证键的唯一性,需要覆盖hashCode方法,和equals方法。
1、添加: 1、V put(K key, V value) (可以相同的key值,但是添加的value值会覆 盖前面的,返回值是前一个,如果没有就返回null) 2、putAll(Map<? extends K,? extends V> m) 从指定映射中将所有映射关 系复制到此映射中(可选操作)。 2、删除 1、remove() 删除关联对象,指定key对象 2、clear() 清空集合对象 3、获取 1:value get(key); 可以用于判断键是否存在的情况。当指定的键不存在的时候,返 回的是null。 3、判断: 1、boolean isEmpty() 长度为0返回true否则false 2、boolean containsKey(Object key) 判断集合中是否包含指定的key 3、boolean containsValue(Object value) 判断集合中是否包含指定的value 4、长度: Int size()
Map遍历方式
package com.sm.obj;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
//Map遍历方式
public class Map1 {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer,String>();
map.put(1, "宿舍532");
map.put(2, "宿舍531");
map.put(4, "宿舍529");
map.put(3, "宿舍530");
System.out.println(map);
//遍历方式
//1.通过 使用keyset取出里面所有键,然后在通过get方法 获取其中对应的值
Set<Integer> ks=map.keySet();
Iterator<Integer> it=ks.iterator();
while (it.hasNext()){
Integer key=it.next();//相当于遍历
String value=map.get(key);
System.out.println("key:"+key+"value:"+value);
}
//2.通过Map中的entrySet()方法获取存放Map.Entry<K,V>对象的Set集合。
//Set<Map.Entry<K,V>> entrySet()
//面向对象的思想将map集合中的键和值映射关系打包为一个对象,就是Map.Entry
//,将该对象存入Set集合,Map.Entry是一个对象,那么该对象具备的getKey,getValue获得键和值。
//推荐使用的
Set<Map.Entry<Integer,String>> set=map.entrySet();
Iterator<Map.Entry<Integer,String>> itr=set.iterator();
while (itr.hasNext()){
//返回的是封装了key和value对象的Map.Entry对象
Map.Entry<Integer,String> en=itr.next();
//获取Map.Entry对象里面的key和value对象
Integer key=en.getKey();
String value=en.getValue();
System.out.println("key:"+key+" "+"value:"+value);
}
}
}
结果:
{1=宿舍532, 2=宿舍531, 3=宿舍530, 4=宿舍529}
key:1value:宿舍532
key:2value:宿舍531
key:3value:宿舍530
key:4value:宿舍529
key:1 value:宿舍532
key:2 value:宿舍531
key:3 value:宿舍530
key:4 value:宿舍529