Java(18) 集合框架
一.集合框架
Collectoin Map
List set HashMap
ArrayList LinkedList HashSet
1.1 List的方法
List<元素> list = new ArrayList<元素类型>()
list.add(元素);//增加元素
list.add(元素);//向指定位置插入元素
list.remove(元素);//删除指定小标的元素
list.remove(元素);//删除指定元素
list.remove(元素);//获得指定下标的元素
list.remove(元素);//集合中是否有指定元素
public class Test1 {
public static void main(String[] args) {
Dog ooDog = new Dog("欧欧","拉布拉多犬");
Dog yyDog = new Dog("丫丫","雪娜瑞");
Dog mmDog = new Dog("美美","雪娜瑞");
Dog ffDog = new Dog("菲菲","拉布拉多犬");
List d = new ArrayList();
d.add(ooDog);
d.add(yyDog);
d.add(mmDog);
d.add(2, ffDog);//添加yyDog在指定位置
System.out.println("共计有"+d.size()+"条狗狗");
System.out.println("分别是:");
for(int i=0;i<d.size();i++){
Dog dog =(Dog) d.get(i);
System.out.println(dog.getName()+"\t"+dog.getStrain());
}
}
}
示例1
运行结果为:
1.2 Collection,List,Set的区别
Collection:不唯一,无序
List:不唯一,有序
Set:唯一,无序
1.3 ArrayList和LinkedList的区别
a.都实现了List
b.ArrayList是可边长数组方式实现,查询效率高
LinkedList是链表方式实习,增加和删除效率高
1.4 List的常用方法
List<Object> list = new ArrayList<Object>();
list.add(obj);//增加元素
list.get(下标)//获得指定下标元素
list.size();//长度
list.remove(obj);//删除指定元素
list.contains(obj);//是否包含指定元素
1.5 Map 常用方法(键值对方式存储数据)
Map<Object,Object> maps = new HanshMap<Object,Object>();
maps.put(key,value);//增加元素
maps.get(key);//获得指定key的值
maps.size();//长度
maps.remove(key);//删除指定元素
maps.containsKey(key);//是否包含指定key
public class Test2 {
public static void main(String[] args) {
Dog ooDog = new Dog("欧欧","拉布拉多犬");
Dog yyDog = new Dog("丫丫","雪娜瑞");
Dog mmDog = new Dog("美美","雪娜瑞");
Dog ffDog = new Dog("菲菲","拉布拉多犬");
LinkedList d = new LinkedList();
d.add(ooDog);
d.add(yyDog);
d.addFirst(mmDog);
d.addLast(ffDog);
Dog dogFirst = (Dog)d.getFirst();
System.out.println("第一条狗狗的昵称是:"+dogFirst.getName());
Dog dogLast = (Dog)d.getLast();
System.out.println("第一条狗狗的昵称是:"+dogLast.getName());
d.removeLast();
d.removeFirst();
System.out.println("\n删除部分狗狗后还有"+d.size()+"条狗狗");
System.out.println("分别是:");
for(int i=0;i<d.size();i++){
Dog d1 = (Dog) d.get(i);
System.out.println(d1.getName()+"\t"+d1.getStrain());
}
}
}
示例2
运行结果为:
注意;key是唯一的,重复的话那么后面的会覆盖前面的value是可以重复的
Vector和ArrayList的异同
a.Vector的线程安全,ArrayList重速度轻安全,线程非安全
b.长度需增长时,Vector默认增长一倍,ArrayList增长50%
Hashtable和HashMap的异同
a.实现原理,功能相同,可以互用
b.主要区别
1,Hashtable继承Dictionary类,HashMap实现接口
2,Hashtable线程安全,HashMap线程非安全
3,Hashtable不允许null值,HashMap允许null值
1.6集合的迭代
语法:Interator<Object> it = 集合.iterator();
while(it.hasNext){
Object obj = it.next();
}
it.hasNext();//判断是否有下一个元素
it.next;//移动指增,返回指增指向元素
注意:集合在 篇利的过程中不能进行修改,进行了修改操作,那么就会抛出
ConcarrentModification Exception异常,需要修改的话,使用迭代器的it.remove()方法;
public class Test3 {
public static void main(String[] args) {
Dog ooDog = new Dog("欧欧","拉布拉多犬");
Dog yyDog = new Dog("亚亚","雪娜瑞");
Dog mmDog = new Dog("美美","雪娜瑞");
Dog ffDog = new Dog("菲菲","拉布拉多犬");
Map m = new HashMap();
m.put(ooDog.getName(), ooDog);
m.put(yyDog.getName(),yyDog );
m.put(mmDog.getName(),mmDog );
m.put(ffDog.getName(),ffDog);
System.out.println("使用Iterator遍历,所有狗狗的昵称和品种分别是:");
//取出所有key的集合
Set keys = m.keySet();
Iterator it = keys.iterator();
while(it.hasNext()){
String k = (String)it.next();
Dog d = (Dog)m.get(k);
System.out.println(k+"\t"+d.getStrain());
}
}
}
示例3
运行结果为:
Java(18) 集合框架的更多相关文章
- java的集合框架set 和map的深入理解
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- Java 高级-集合框架
参考资料 参考 HashMap 类似 C++ 中的 STL 标准模板库,Java 也在 java.util 包中封装了一套常用数据结构及其算法,称为集合框架.所有的集合框架都包含如下内容: 接口:代表 ...
- Java 之 集合框架(JCF)
1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...
- java学习——集合框架(Collection,List,Set)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定,就使用集合容器进行存储. 集合特点:1,用于存储对象的容器.2,集合的长度是可变的.3,集合中不可以存储基本数据类型值. ...
随机推荐
- LeetCode算法题-Reach a Number(Java实现)
这是悦乐书的第310次更新,第331篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第179题(顺位题号是754).你站在无限数字线的0号位置.在目的地有个target.在 ...
- 我的第一个python web开发框架(37)——职位管理功能
对于职位管理,我们可以理解它为角色权限的管理,就像前面所说的一样,有了职位管理,后台管理系统绑定好对应的权限以后,新进员工.离职或岗位调整,管理员操作起来就非常的便捷了,只需要重新绑定对应职位就可以做 ...
- keil 中报错和警告提示解决办法
1.warning: #1-D: last line of file ends without a newline 解决办法:在文件最后一行加入一个回车. 2.error: #134: expecte ...
- mysql的进阶
老师的博客:http://www.cnblogs.com/wupeiqi/articles/5713323.html 总结 导出与导入 导出:mysqldump -u root -p 数据库 > ...
- linux 安装中文字体
工具/原料 centos6.5_x64 方法/步骤 centos6.5下使用下面命令进行安装 yum install -y fontconfig mkfontscale 使用fc-list ...
- 好程序员web前端分享HTML基础篇
好程序员web前端分享HTML基础篇,最近遇到很多新手,都会问,如果要学web前端开发,需要学什么?难不难学啊?多久能入门之类的问题?那么今天好程序员就先来给大家分享一下web前端学习路线:HTML基 ...
- 如何使用ASP.NET Core、EF Core、ABP(ASP.NET Boilerplate)创建分层的Web应用程序(第一部分)
本文是为了学习ABP的使用,是翻译ABP官方文档的一篇实战教程,我暂时是优先翻译自己感兴趣或者比较想学习的部分,后续有时间希望能将ABP系列翻译出来,除了自己能学习外,有可能的话希望帮助一些英文阅读能 ...
- 初识Haskell 五:自定义数据类型和类型类
对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 自定义数据类型 data type de ...
- Vuex 存储||获取后台接口数据
如果你对 Vuex 有一定的了解的话呢,可以继续这一篇的学习了,如果没有的话, 建议先看一看我的上一篇 Vuex基础:地址在下面 Vuex的详解与使用 Vuex刷新数据不丢失 这篇接着上一篇: 这篇将 ...
- 如何在Linux中轻松删除源安装的软件包?
第1步:安装Stow 在这个例子中,我们使用的是CentOS,因此我们需要扩展的EPEL库.您可以使用以下命令安装它们:yum install epel-release然后,下面这段命令:yum in ...