Java集合类的总结
Java语言的java.until包中提供了一些集合类,这些集合类又被称为容器。说到集合就会想到数组,集合类与数组的不同之处是,数组的长度是固定的,集合的长度是可变的;数组用来存放基本数据类型,集合从来存放对象的引用。常用的集合有List集合,Map集合与Set集合,其中List与Set实现了Collection接口,他们的继承关系如下图:

Map接口的常用方法:
Map接口提供了将键 映射到 值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。Map的常用方法如下:
| 方法 | 返回值 | 功能描述 |
| put(key,value) | Object | 向集合中添加指定的key与value的映射关系 |
| get(key) | Object | 如果存在指定的键对象,则返回该对象对应的值,否则返回null |
| containsKey(key) | boolean | 如果此映射包含指定键的映射关系,则返回true |
| containsValue(value) | boolean | 如果此映射将一个或多个键映射到指定值,则返回true |
| keySet() | Set | 返回该集合中的所有键对象组成的Set集合 |
| values() | Collection | 返回该集合中所有值对象形成的Collection集合 |
| size() | int | 返回该集合中所有对象的个数 |
| remove(key) | 清除该集合中指定键对象的内容 | |
| clear() | 清除该集合中所有对象的内容 |
写法:
Map方法是不能直接被new出来的,所以想要使用Map方法,就要采用Map中的HashMap。写法为:
Map<String,String> list = new HashMap<String,String>();
下面就举个例子:
public static void main(String[] args) {
Map<String,String> list = new HashMap<String,String>();
list.put("zs", "张三家的狗狗");
list.put("lisi","李四家的小狗");
String d = list.get("lisi");
System.out.println(d);
Set keys = list.keySet();
Iterator it = keys.iterator();
while(it.hasNext()){
Object obj = it.next();
//System.out.println(obj);
Object v = list.get(obj);
System.out.println(v);
}
String s = (String)list.get("zs");
System.out.println(s);
System.out.println(list.containsKey("zs"));
System.out.println(list.containsValue("hello world"));
System.out.println(list.size());
list.remove("zs");
System.out.println(list.size());
list.clear();
System.out.println(list.size());
}
输出结果为:
李四家的小狗
李四家的小狗
张三家的狗狗
张三家的狗狗
true
false
2
1
0
Collection接口中List的常用方法:
List接口继承了Collection接口,因此包含Collection中的所有方法。但是他还有一些适合于自身的常用方法。如下:
| 方法 | 返回值 | 功能描述 |
| add(int index,Object obj) | void | 用来向集合中的指定索引位置添加对象,集合的索引位置从0开始 |
| get(int index) | Object | 用来获取指定索引位置的对象 |
| contains() | boolean | 如果列表包含指定的元素,则返回true |
| indexOf(Object obj) | int | 该方法返回列表中对象第一次出现的索引位置,如果集合中不包含该元素,则返回-1 |
| lastIndexOf(Object obj) | int | 该方法返回列表中对象最后一次出现的索引位置,如果集合中不包含该元素,则返回-1 |
| set(int index,e element) | Object | 用指定元素替换列表中指定位置的元素,返回以前在指定位置的元素 |
| subList(int formIndex,int toIndex) | LIst | 获取从索引formIndex到toIndex之间的元素对象 |
| size() | int | 返回该集合中所有对象的个数 |
| remove(int index) | Object | 用来移除集合中指定索引位置的对象 |
| clear() | 清除该集合中所有对象的内容 | |
| iterator | 返回按适当顺序在列表的元素上进行迭代的迭代器。 |
此时我们需要注意的是:List接口中适合于自身的方法都与索引有关。
写法:
同样的道理,list也是不能被直接new出来的,所以我们也要使用list的ArrayList。写法如下:
List<String> list = new ArrayList<String>();
下面举个例子:
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("helll world");
list.add("good morning");
list.add("merry christmas");
list.add("happy new year");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
输出结果为:
helll world
good morning
merry christmas
happy new year
这里是采用索引号来进行遍历输出所有内容的,下面再一个例子来了解一下迭代器iterator及其他内容的使用:
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("吕布");
list.add("赵云");
list.add("典韦");
list.add("关羽");
list.add("张飞");
list.set(4, "马超");
Iterator<String> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println(list.size());
Object obj ="吕布";
list.remove(obj);
System.out.println(list);
list.remove("赵云");
System.out.println(list.size());
System.out.println(list.get(2));
list.clear();
System.out.println(list);
}
输出结果为:
吕布
赵云
典韦
关羽
马超
5
[赵云, 典韦, 关羽, 马超]
3
马超
[]
Collection中Set接口的常用方法:
Set集合由Set接口和Set接口的实现类组成。Set接口继承了Collection接口,因此包含了Collection接口的所有方法。如下:
| 方法 | 返回值 | 功能描述 |
| add(Object obj) | boolean | 如果此Set集合中尚未存在指定的元素,则添加此元素 |
| get(int index) | Object | 用来获取指定索引位置的对象 |
| removeAll(Collection c) | boolean | 在Set集合中移除包含在指定Collection中的元素 |
| size() | int | 返回该集合中所有对象的个数 |
| remove(Object obj) | boolean | 将指定的参数对象移除集合 |
| clear() | 清除该集合中所有对象的内容 | |
| iterator | 返回按适当顺序在列表的元素上进行迭代的迭代器。 |
由于Set集合中不允许存在重复值,因此可以使用Set集合中的addAll()方法,将Collection集合添加到Set集合中并除掉重复值。
来个例子:
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("apple");
list.add("banana");
list.add("pear");
list.add("apple");
Set<String> set =new HashSet<String>();
set.addAll(list);
Iterator<String> it = set.iterator();
while(it.hasNext()){
System.out.println(it.next()+"\t");
}
}
输出结果为:
banana
apple
pear
Java集合类的总结的更多相关文章
- Java集合类--温习笔记
最近面试发现自己的知识框架有好多问题.明明脑子里知道这个知识点,流程原理也都明白,可就是说不好,不知道是自己表达技能没点,还是确实是自己基础有问题.不管了,再巩固下基础知识总是没错的,反正最近空闲时间 ...
- 做JavaWeb开发不知Java集合类不如归家种地
Java作为面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.但是使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容 ...
- 【转载】Java集合类Array、List、Map区别和联系
Java集合类主要分为以下三类: 第一类:Array.Arrays第二类:Collection :List.Set第三类:Map :HashMap.HashTable 一.Array , Arrays ...
- 摘抄转载前辈们的Java集合类总结
本文摘自 Blue Sky:http://www.cnblogs.com/hubcarl JAVA 集合类介绍和使用 类关系示意图Iterable(接口) │ └--Collection (接口) ├ ...
- Java集合类简单总结(重学)
java集合类简介(重学) 一.Collection(集合).Map接口两者应该是平行关系吧. 1.Map介绍 Map是以键值(key-value)对来存放的,2个值.通过key来找到value(例: ...
- Java集合类中的哈希总结
JAVA集合类中的哈希总结 目 录 1.哈希表 2.Hashtable.HashMap.ConcurrentHashMap.LinkedHashMap.TreeMap区别 3.Hashtable.Ha ...
- Java集合类: Set、List、Map、Queue使用场景梳理
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E ...
- Java 集合类详解(含类图)
0.参考文献 此图中蓝色为抽象类.深红色表示接口(Arrays除外).绿色表示具体容器类 1.java集合类图 1.1 1.2 上述类图中,实线边框的是实现类,比如ArrayList,LinkedLi ...
- Java集合类: Set、List、Map、Queue使用
目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的 ...
- 基础知识《六》---Java集合类: Set、List、Map、Queue使用场景梳理
本文转载自LittleHann 相关学习资料 http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F% ...
随机推荐
- OpenLayers 3 之 地图样式(ol.style)详解
地图样式是由 style 类控制的,其包含了地图样式的方方面面,例如,填充色.图标样式.图片样式.规则图形样式.边界样式.文字样式等,样式一般针对矢量要素图层. 矢量图层样式可以事先写好,写成静态的, ...
- for in 结构
in 运算符也是一个二元运算符,但是对运算符左右两个操作数的要求比较严格.in 运算符要求第 1 个(左边的)操作数必须是字符串类型或可以转换为字符串类型的其他类型,而第 2 个(右边的)操作数必须是 ...
- Jsonp跨域
Jsonp.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- SQLServer生成三位姓名及11位国内电话号码(生成测试数据用)
SELECT SUBSTRING(N'王李张刘陈杨黄赵吴周徐孙马朱胡郭何高林郑谢罗梁宋唐许韩冯邓曹彭曾肖田董袁潘于蒋蔡余杜叶程苏魏吕丁任沈姚卢姜崔钟谭陆汪范金石廖贾夏韦付方白邹孟熊秦邱江尹薛闫段雷侯龙 ...
- vim配置及快捷键
vim+python http://codingpy.com/article/vim-and-python-match-in-heaven/ vim+c++ http://jikaichen.com/ ...
- 【原】iOS学习之UITabBar的隐藏
当页面使用 UITabBarController + UINavigationController 框架的时候,当跳转到详情页面的时候,如果 UITabBar 仍然存在的话就会造成逻辑混乱,用户体验也 ...
- 接口测试SoapUI参数化
上次和大家一起完成了soapui的参数之一properties,今天我们一起交流另外一种参数化的方法,跟着一起练习,不懂不要紧,练习多了就会慢慢懂的: 1.准备excle(目前soapui只支持xls ...
- ST
这次说一下测试的基础部分 软件测试 软件测试(英语:software testing),描述一种用来促进鉴定软件的正确性.完整性.安全性和质量的过程.换句话说,软件测试是一种实际输出与预期输出间的审核 ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
- 前端工具之-- Sublime
开始学习前端知识,做一些笔记来记录下- 之前学习都是使用的dw 现在前端开发工具既轻便功能也够强大. 下面记录下常用的前端工具: Sublime3:需要安装第三方包,一般 Atom:继承度非常好 VS ...