Java Collection知识总结
首先说说java中常用的集合容器:ArrayList,LinkedList,Vector,HashMap,Hashtable,HashSet,TreeSet。【就个人认为】
java集合容器本人理解为2大类:一类是诸如List和Set集合,另一类是诸如Map集合。
【ArrayList集合】:
1.该集合中可以存放重复元素;
arraylist.add(new goods("10010","惠普笔记本",5529));
arraylist.add(new goods("10010","惠普笔记本",5529));
arraylist.add(new goods("10011","小米手机",2999));
2.获取该集合中所有元素内容时,可以通过for循环遍历;
for(int i=0;i<arraylist.size();i++){
goods temp1 = (goods)arraylist.get(i); //注意:获取集合中的对象时,类型强制转换
System.out.println("__编号:"+temp1.getNo()+"__名称:"+temp1.getName()+"__价格:"+temp1.getPrice());
}
3.在该集合中如何查找某个具体对象?通过传入对象的某个属性值来比较;
//根据某个员工的姓名查询该员工的信息
public void showStaff(String name){
//遍历整个集合
for(int i=0;i<arraylist.size();i++){
//取出员工对象
Staff staff =(Staff)arraylist.get(i); //类型强制转换
//比较员工姓名,输出详细信息
if(staff.getName().equals(name)){
System.out.println("姓名"+name+"的薪水是:"+staff.getSalary());
}
}
}
【LinkedList集合】:
1.该集合中也可以存放重复元素;
2.该集合提供元素存放时的数据结构,先进先出[addList()]和先进后出[addFrist()];
3.该集合提供一次性删除集合中所有的元素[removeAll()];
4.获取该集合中所有元素内容时,可以通过for循环遍历;
for(int i=0;i<linkedlist.size();i++){
goods temp1 = (goods)linkedlist.get(i); //注意:获取集合中的对象时,类型强制转换
System.out.println("__编号:"+temp1.getNo()+"__名称:"+temp1.getName()+"__价格:"+temp1.getPrice());
}
【HashMap集合】:
1.该集合中不允许存在键重复的元素,如果用户在添加键相同而值不同的对象时,容器会自动覆盖原先存在键的值【也就是说该集合中的键是惟一的】;
hashmap.put("30010", new goods("30010","无线鼠标",545.65f));
hashmap.put("30010", new goods("30010","覆盖",0.001f)); //注意:30010对应的值会覆盖上面30010对应的值
hashmap.put("30020", new goods("30020","无线键盘",984.23f));
2.该集合在获取集合内所有的对象时,采用迭代器的方法来获取;注意不能用for循环遍历;
Iterator iterator = hashmap.keySet().iterator();
while(iterator.hasNext()){ //方法hasNext()就是判断该集合中是否还有下一个元素
//取出key
String key = iterator.next().toString(); //将取出的key转化为字符串类型的
goods goods2 = (goods)hashmap.get(key); //通过键找到对象,类型强制转换
System.out.println("编号:"+goods2.getNo()+"__名称:"+goods2.getName()+"__价格:"+goods2.getPrice());
}
3.在该集合中如何查找某个具体对象?就是通过键来查找;
//根据商品编号判断该商品是否存在;若存在,获取该商品的属性值
if(hashmap.containsKey("30010")){ //根据集合中元素的键来判断该元素是否存在
System.out.println("该商品存在。");
goods goods1 = (goods)hashmap.get("30010"); //获取商品对象,类型强制转换
System.out.println("该商品的编号是:"+goods1.getNo());
System.out.println("该商品的名字是:"+goods1.getName());
System.out.println("该商品的价格是:"+goods1.getPrice());
}else{
System.out.println("该商品不存在。");
}
【HashMap和Hashtable的区别:】
1.同步性;HashMap是异步的,而Hashtable是同步的。
2.是否存放NULL;HashMap可以存放NULL键和NULL值,而Hashtable不可存放NULL键和NULL值,在运行时会报异常。
【注意误区:】
一);
在比较2个对象的内容是否相等,不能用if(Object1==Object2){}的思维来完成,因为该思维方式是比较这俩个对象在内存中的地址,无论如何是不想等的,就算这俩个对象的内容是一致的,它返回的值依然是false,原因是这俩个对象在内存中的存放位置是不同的。应该用equals()方法来完成,具体的通过一个例子来演示:
String str1 = new String("abc");
String str2 = new String("abc");
if(str1 == str2){
System.out.println("不相等"); //这句话是不可能输出的,因为在这儿比较的是它们的内存地址,它们的地址是不相同的
}
if(str1.equals(str2)){
System.out.println("相等"); //这句话成功打印,因为在这儿比较的是它们的内容值,它们的值是完全一致的
}
Java Collection知识总结的更多相关文章
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- Java开发知识之Java中的Map结构
Java开发知识之Java中的Map结构 一丶Map接口 Map没有实现Collection接口,提供的是Key 到Value的映射. Map中.不能包含相同的Key,每个Key只能映射一个Value ...
- Java开发知识之Java中的集合Set接口以及子类应用
---恢复内容开始--- Java开发知识之Java中的集合Set接口以及子类应用 一丶Set接口以及作用 在上一讲.我们熟悉了接口的实现图.以及自己各有的子类. List接口主要存储的数据是可以重复 ...
- Java开发知识之Java中的集合上List接口以及子类讲解.
Java开发知识之Java中的集合类 一丶什么是集合类 如果你学习说数据结构,那么学习集合就很简单. 因为集合就是存储数据的结构. 例如 有链表结构 (list ) 还有 map结构.等等. 集合类就 ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- Java基础知识常识总结
Java基础知识常识总结 1.面向对象的特征以及对他的理解? 封装,继承,多态,如果再增加一条就是抽象. 2.Object有几种方法,分别是什么? 在JDK1.5中的11种方法,分别有: toStri ...
- java基础知识一览(二)
一.java基础知识 1.一个文件中只能有一个public的类,因为他的类名要求和文件名相同. 2.classpath变量可以设置其它目录下的类. 例如:类文件所在目录是:F:\Javajdk,那么没 ...
随机推荐
- 使用HTML5开发Kinect体感游戏
一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...
- Intellij idea添加单元测试工具
1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(72)-微信公众平台开发-消息处理
系列目录 前言 Senparc.Weixin.MP SDK提供了MessageHandler消息处理类 在作者的Wiki中也详细说明了如何定义这个类,下面我们来演示,消息的回复,及效果 了解Messa ...
- [笔记]HAproxy reload config file with uninterrupt session
HAProxy is a high performance load balancer. It is very light-weight, and free, making it a great op ...
- 微信小程序IDE(微信web开发者工具)安装、破解手册
1.IDE下载 微信web开发者工具,本人是用的windows 10 x64系统,用到以下两个版本的IDE安装工具与一个破解工具包: wechat_web_devtools_0.7.0_x64.exe ...
- C#与C++通信
# C#与C++相互发送消息 # ## C#端: ## namespace CshapMessage { /// /// MainWindow.xaml 的交互逻辑 /// public partia ...
- PHP设计模式(二)工厂方法模式(Factory Method For PHP)
简单工厂简述: 简单工厂模式实现了生产产品类的代码跟客户端代码分离,在工厂类中你可以添加需要生成长跑的逻辑代码(new 产品类),但是问题来了,优秀的代码是符合"开闭原则"如果你要 ...
- FineBI:一个简单易用的自助BI工具
过去,有关企业数据分析的重担都压在IT部门,传统BI分析更多面向的是具有IT背景的人员.但随着业务分析需求的增加,很多公司都希望为业务用户提供自助分析服务,将分析工作落实到业务人员手中.但同时,分析工 ...
- [Hadoop in Action] 第7章 细则手册
向任务传递定制参数 获取任务待定的信息 生成多个输出 与关系数据库交互 让输出做全局排序 1.向任务传递作业定制的参数 在编写Mapper和Reducer时,通常会想让一些地方可以配 ...
- C#(或者说.NET/Mono)能做的那些事
不做语言之争,只陈述事实: 1.桌面软件与服务 不仅是在Windows上,有了开源的Mono,在Apple Mac和Linux(如:Ubuntu)上也有C#的施展天地.并且还可以通过mkbundle工 ...