07java基础进阶之集合框架
2019-07-26 21:09
369 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Denial_learn/article/details/97419223
Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中。
其中经常使用到的接口,如图所示:(就是用红框包起来的)
其中:Collections 提供了对集合进行排序、遍历等多种算法实现
Java集合框架包含的内容:
- Collection 接口存储一组不唯一,无序的对象
- List 接口存储一组不唯一,有序(插入顺序)的对象
例如:
-
Set 接口存储一组唯一,无序的对象
例如:
-
Map接口存储一组键值对象,提供key到value的映射
例如:
List接口的实现类:
list 包含两个经常使用到的类:ArrayList和LinkedList
- ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
例如:
- LinkedList采用链表存储方式。插入、删除元素时效率比较高
例如:
ArrayList集合类的使用:
创建ArrayList列表,并进行存储数据,以及获取长度和逐歌输出内容
//创建四个狗狗对象 … … List dogs = new ArrayList(); //创建ArrayList对象并存储狗狗 dogs.add(ououDog);//通过add方法进行添加对象 dogs.add(yayaDog);//这里没有使用泛型,不能指定进行添加的类型 dogs.add(meimeiDog); dogs.add(2, feifeiDog); // 添加feifeiDog到指定位置(2) System.out.println("共计有" + dogs.size() + "条狗狗。");//size方法拿到这个列表内的存入的对象数目 System.out.println("分别是:"); for (int i = 0; i < dogs.size(); i++) { Dog dog = (Dog) dogs.get(i);//逐个获取各个元素,没有使用泛指,所以在这里获取到内容之后,需要进行强制转换为Dog的对象类型 … … }
使用ArrayList移除、判断元素
… … dogs.remove(0); // 删除下标为0的元素 dogs.remove(feifeiDog);//删除指定狗狗 … … if(dogs.contains(meimeiDog))//判断是否包含指定狗狗,返回值为boolean类型 System.out.println("\n集合中包含美美的信息"); else System.out.println("\n集合中不包含美美的信息");
List接口常用方法:在这里插入图片描述
LinkedList集合类的使用:
创建LinkedList列表对象,通过add方法进行添加,获取第一条和最后一条元素信息,删除第一和最后元素(使用到的是LinkedList特有的方法)
// 创建多个狗狗对象 … … LinkedList dogs = new LinkedList();//创建LinkedList集合对象 dogs.add(ououDog); dogs.add(yayaDog);//存储狗狗对象 dogs.addLast(meimeiDog);//在第一个位置添加元素 dogs.addFirst(feifeiDog);//在最后一个位置添加元素 Dog dogFirst= (Dog)dogs.getFirst();//获取第一条狗狗信息 System.out.println("第一条狗狗昵称是"+dogFirst.getName() ); //上边也说过 这个没有使用到泛型,这里获取到元素之后,需要进行强制转换 Dog dogLast= (Dog)dogs.getLast();//获取最后一条狗狗信息 System.out.println("最后一条狗狗昵称是"+dogLast.getName()); dogs.removeFirst();//删除第一个狗狗 dogs.removeLast();//删除最后一个狗狗
LinkedList的特殊方法:
ArrayList和LinkedList的区别:
- 存储方式
- ArrayList:长度可变的数组,存储空间连续
- LinkedList集合:链表式结构存储
- 执行效率
- ArrayList:遍历和随机访问效率高
- LinkedList集合:插入和删除效率高
Map接口:
Map 当中存储的内容分为两个,统称为键值对,由key和value结合(key:value)
废话不多说,直接上代码!
Map countries = new HashMap();//使用HashMap存储多组键值对 countries.put("CN", "中华人民共和国");//Map的特有方法put,进行添加元素 countries.put("RU", "俄罗斯联邦"); countries.put("FR", "法兰西共和国"); countries.put("US", "美利坚合众国"); String country = (String) countries.get("CN");//获取指定元素的值 … … System.out.println("Map中共有"+countries.size() +"组数据");//获取Map元素个数 ,size方法 countries.remove("FR");//删除指定元素 System.out.println("Map中包含FR的key吗?" + countries.containsKey("FR"));//判断是否包含指定元素 System.out.println( countries.keySet() ) ;//keySet()显示键集,将所有的键,显示出来 System.out.println( countries.values() );//values()显示值集,将所有的内容(value),显示出来 System.out.println( countries );//显示键值对集,将所有的键值对,显示出来
Map接口常用方法:
迭代器Iterator:
获取Iterator :Collection 接口的iterator()方法
Iterator的方法:
- boolean hasNext(): 判断是否存在另一个可访问的元素
- Object next(): 返回要访问的下一个元素
遍历集合的方法:
以遍历map集合为例,解说迭代器和增强for循环的使用:
- 1.使用迭代器Iterator遍历
创建迭代器和进行遍历(没有进行传入元素,自行添加)
Set keys=dogMap.keySet(); //取出所有key的集合 Iterator it=keys.iterator(); //获取Iterator对象 while(it.hasNext()){ String key=(String)it.next(); //取出key Dog dog=(Dog)dogMap.get(key); //根据key取出对应的值 System.out.println(key+"\t"+dog.getStrain()); }
- 2.增强for循环
先创建map,再进行使用增强for循环
语法:
for(元素类型t 元素变量x : 数组或集合对象){
引用了x的java语句
}
Map<Integer,Integer> a =new HashMap<Integer,Integer>;//创建一个Map,使用到了泛型 a.put(1,1);//添加键值对 a.put(2,2); a.put(3,3); a.put(4,4); a.put(5,5); //采用了增强的for循环 set b = a.keySet();//将所有的键,取出来保存在b中 for(object o : b){ system.out.print(o) }
泛型集合:
//创建ArrayList集合对象并存储狗狗 List <Dog> dogs = new ArrayList<Dog>();//标记元素类型,笼统的来说就是那个<>里面存放的是数据类型的包装类,也可以是类; dogs.add(dog1); … … //dogs.add("hello"); 类型不符,出现编译错误 // 显示第三个元素的信息 Dog dog = dogs.get(2); //无需类型强制转换 //使用foreach遍历dogs对象 for(Dog dog:dogs){//无需类型强制转换 … … }
map当中的使用:
Map<String,Dog> dogMap=new HashMap<String,Dog>();//标记键-值类型<>里面存放的类型是键和值 dogMap.put(ououDog.getName(),ououDog); … … /*通过迭代器依次输出集合中所有狗狗的信息*/ Set<String> keys=dogMap.keySet(); //取出所有key的集合 Iterator<String> it=keys.iterator(); //获取Iterator对象 while(it.hasNext()){ String key=it.next(); //取出key,无需类型转换 Dog dog=dogMap.get(key); //根据key取出对应的值,无需类型转换 … … } //使用foreach语句输出集合中所有狗狗的信息 for(String key:keys){ Dog dog=dogMap.get(key); //根据key取出对应的值,无需类型转换 … … }
相关文章推荐
- Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历
- 【黑马程序员】Java基础07:集合框架与典型应用
- 黑马程序员-Java语言基础– 集合框架 第14天
- 黑马程序员_Java基础_集合框架1
- Java基础----Java---集合框架---泛型、泛型方法、静态方法泛型、泛型接口、泛型限定、泛型类
- Java基础之集合框架(三)--Map、HashMap、TreeMap
- Java基础之集合框架(二)--TreeSet、泛型
- 黑马程序员_Java基础04_集合框架
- java基础:集合框架
- java基础-- 集合框架入门 及 List集合
- Java基础复习:集合框架
- 黑马程序员——Java基础---泛型、集合框架工具类:collections和Arrays
- 黑马程序员---java基础---4集合框架
- Java基础----Java---集合框架---泛型、泛型方法、静态方法泛型、泛型接口、泛型限定、泛型类
- 黑马程序员_java基础--集合框架(3)
- 黑马程序员——java基础——集合框架(1)Collection
- 黑马程序员_Java基础_集合框架(四)_17
- 黑马程序员_java基础6-集合框架Collection和泛型
- 黑马程序员-----java基础十五(java之集合框架)
- Java基础之集合框架