为什么出现集合类?
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
集合类的特点:
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
集合框架中的常用接口:
Collection接口有两个字接口:
List(列表),Set(集)
List:可存放重复元素,元素存取是有序的。
Set:不可以存放元素,元素存取是无序的。
一:List集合
List有序集合也称为序列。该界面的用户可以精确的控制列表中每个元素的插入位置。用户可以通过整数索引访问元素。并搜索列表中的元素。
List集合特点:
有序:存储和取出的元素顺序一致;
可重复:存储的元素可以重复。
ArrayList:线程不安全,查询速度快。
LinkedList:列表结构,增删速度快。
取出List集合中元素的方式:
get(int index):通过脚标获取元素。
iterator():通过迭代方法获取迭代器对象。
因为ArrayList其实就像一个动态的数组,所以是可以通过索引来查找元素,因此它的查询较快
代码示例:
List<String> list=new ArrayList<>();//集合初始化
list.add("c");//添加元素
list.add("b");
list.add("a");
list.add("c");
System.out.println(list);
System.out.println(list.get(1));
System.out.println("List集合的遍历:");
/*for (int i=0;i<list.size();i++){ //循环遍历
String s=list.get(i);
System.out.println(s);
}*/
for (String s:list){
System.out.println(s); //打印输出
}
运行结果:
二:Set接口
与List接口一样,Set接口也提供了集合操作的基本方法。
Set也是一个集合接口,继承了Collection接口
List与set区别:
1.List:有序可重复。
有序指:按照新增的顺序存储。
可重复:存储元素的值可以重复。
2.set:无序不可重复。录入的顺序和存储的顺序不一致。
不可重复:相同值的元素不可重复存储。
HashSet
HashSet 是 Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的
HashSet允许有null值
HashSet 是无序的,即不会记录插入的顺序
实现HashSet对象
Set<Integer> set = new HashSet<>();
添加元素
set.add("z"); set.add("y"); set.add("x"); set.add("z");
迭代器遍历集合
Iterator<String> iterator= set.iterator();; while (iterator.hasNext()){ //判断iterator是否有下一个值 String s=iterator.next(); //获取这个值 System.out.println(s); }
三:Map
Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。
Map是基于键值对形式存储的数据结构
在Map中Key是不允许重复的,value值是可以重复的
Map会把所有的Key存放一个set集合中
因为Map是一个接口不能直接实现,需要通过创建Map类的实现类HashMap
Map<String,Object> map =new HashMap<>();
添加操作put
map.put("name","张三"); map.put("age",20); map.put("sex","男");
迭代器遍历 HashMap集合:
Set<String> keySet=map.keySet(); //获取map中所有key值的set集合
Iterator<String> ite=keySet.iterator();
while (ite.hasNext()){
String key=ite.next();//获取key值
Object value=map.get(key);
System.out.println(key+"--->"+value);
}