java容器 Map Set List
容器:在java中,如果有一个类专门用来存放其他类的对象,这个类就叫做容器,或者叫集合,集合就是将若干性质相同或者相近的类的对象组合在一起而形成一个整体。
boolean add(Object obj):向容器中添加指定的元素
Iterator iterator():返回能够遍历当前集合中所有元素的迭代器
Object[] toArray():返回包含此容器中所有元素的数组。
Object get(int index):获取下标为index的那个元素
Object remove(int index):删除下标为index的那个元素
Object set(int index,Object element):将下标为index的那个元素置为element
Object add(int index,Object element):在下标为index的位置添加一个对象element
Object put(Object key,Object value):向容器中添加指定的元素
Object get(Object key):获取关键字为key的那个对象
int size():返回容器中的元素数
其中map、set、和List中的方法还是有所区别的,具体用法此处不做太多说明
三种容器接口的方法详解:http://blog.csdn.net/lushuaiyin/article/details/7381478/
(1)List:有两个可以实现的类ArrayList和LinkedList
1.ArrayList区分元素顺序,允许包含重复的元素,输出的时候按照插入顺序输出
public class JavaCollection {
public static void main(String[] args) {
/**
* 容器循环输出
* 1.获取迭代器
* 2.使用.hasNext()方法实现循环
* 3.调用.next()方法获取值
*/
List<Integer> list = new ArrayList<Integer>();
list.add(10);
list.add(11);
list.add(44);
list.add(33);
list.add(33); Iterator<Integer> iterator = list.iterator();//获取容器的迭代器
while(iterator.hasNext()){
Integer value = iterator.next();//获取下一个元素
System.out.println(value);
}
}
}
输出结果:
10
11
44
33
33
2.LinkedList:LinkedList类是双向链表,链表中的每个节点都包含了对前一个和后一个元素的引用.
详解:http://blog.csdn.net/i_lovefish/article/details/8042883
public class JavaCollection {
public static void main(String[] args) { LinkedList<Integer> linkList = new LinkedList<Integer>();
linkList.add(5);
linkList.add(2);
linkList.add(3);
linkList.add(1);
linkList.add(4); System.out.println("链表的第一个元素是 : " + linkList.getFirst());
System.out.println("链表最后一个元素是 : " + linkList.getLast());
//循环获取容器中元素
for (Integer integer: linkList) {
System.out.println(integer);
} }
}
输出结果
链表的第一个元素是 : 5
链表最后一个元素是 : 4
5
2
3
1
4
(2)Set的实现类有HashSet TreeSet
Set容器不区分元素顺序,不允许出现重复元素,Set容器可以与数学中的集合相对应:相同的元素不会被加入
1.HashSet
HashSet与HashMap实现机制相同,HashSet 本身就采用 HashMap 来实现的,系统通过Hash函数决定参数的存储位置
2.TreeSet
TreeSet容器特殊,元素放进去的时候自动按照升序排列,输出的时候按照升序输出
public class JavaCollection {
public static void main(String[] args) {
/**
* 容器循环输出
* 1.获取迭代器
* 2.使用.hasNext()方法实现循环
* 3.调用.next()方法获取值
*/ Set<Integer> set = new TreeSet<Integer>();
set.add(10);
set.add(11);
set.add(44);
set.add(33);
set.add(33); Iterator<Integer> iterator = set.iterator();//获取容器的迭代器
while(iterator.hasNext()){
Integer value = iterator.next();//获取下一个元素
System.out.println(value);
}
}
}
输出结果:
10
11
33
44
(3)Map<K,V> 映射 :Map的实现类有HashMap、TreeMap、LinkedHashMap
映射中不能包含重复的键值,每个键最多只能映射一个值,否则会出现覆盖的情况(后面的value值会将前面的value值覆盖掉)
1.HashMap:HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它 的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
HashMap中最重要的实现机制应该就是通过哈希函数获取参数的哈希值然后根据哈希值将参数存储,这又涉及到哈希值的求解以及
冲突的处理 ,通常来说哈希值求解最常用的方法是保留余数法,而处理冲突的方法则有:1.线性探测再散列法 2.平方探测散列3.拉链法
HashMap详解:http://blog.csdn.net/caihaijiang/article/details/6280251
2.TreeMap:不能包含重复的键,每个键最多只能映射一个值,否则会出现覆盖的情况,输出时会按照键的大小升序输出
public class JavaCollection {
public static void main(String[] args) { Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
map.put(1, 1);
map.put(2, 2);
map.put(5, 2);
map.put(3, 3);
map.put(3, 3);
map.put(5, 3); for(Map.Entry<Integer, Integer> entry : map.entrySet()){
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
} }
}
输出结果
key = 1, value = 1
key = 2, value = 2
key = 3, value = 3
key = 5, value = 3
3.LinkedHashMap:是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列.
public class JavaCollection {
public static void main(String[] args) { Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
map.put(100, 1);
map.put(2, 2);
map.put(5, 2);
map.put(90, 3);
map.put(3, 3);
map.put(5, 3); for(Map.Entry<Integer, Integer> entry : map.entrySet()){
System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
} Iterator<Integer> iterator = set.iterator();//获取容器的迭代器
while(iterator.hasNext()){
Integer value = iterator.next();//获取下一个元素
System.out.println(value);
}
}
}
输出结果:key = 100, value = 1
key = 2, value = 2
key = 5, value = 3
key = 90, value = 3
key = 3, value = 3
总结:
List
1.ArrayList区分元素顺序,允许包含重复的元素,输出的时候按照插入顺序输出
2.LinkedList:LinkedList类是双向链表,链表中的每个节点都包含了对前一个和后一个元素的引用.
Set:不区分元素顺序,不允许出现重复元素,Set容器可以与数学中的集合相对应:相同的元素不会被加入
1.HashSet与HashMap实现机制相同,HashSet 本身就采用 HashMap 来实现的,系统通过Hash函数决定
参数的存储位置,输出顺序与输入顺序可能不同
2. TreeSet容器特殊,元素放进去的时候自然而然就有顺序了,输出的时候按照升序输出
Map<K,V> 映射:映射中不能包含重复的键值,每个键最多只能映射一个值,否则会出现覆盖的情况(后面的
value值会将前面的value值覆盖掉)
1.HashMap:HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以
直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
2.TreeMap:不能包含重复的键,每个键最多只能映射一个值,否则会出现覆盖的情况,输出时会按照键的大小升序输出
3.LinkedHashMap:是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,
它还可以按读取顺序来排列.
java容器 Map Set List的更多相关文章
- Java容器Map接口
Map接口容器存放的是key-value对,由于Map是按key索引的,因此 key 是不可重复的,但 value 允许重复. 下面简单介绍一下Map接口的实现,包括HashMap,LinkedHas ...
- Java容器---Map基础
1.Map API (1)Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值. java.util Interface Map<K ...
- java容器-Map
Map:基本思想是映射表(维护键-值对),HashMap,TreeMap,LinkedHashMap,ConcurrentHashMap等都是基于Map接口实现的map容器,他们特性不同,表现在效率, ...
- Java容器——Map接口
1.定义 Map用于保存存在映射关系<key, value>的数据.其中key值不能重复(使用equals()方法比较),value值可以重复. 2.常用实现类 HashMap:和Hash ...
- 【Java心得总结七】Java容器下——Map
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
- Java 容器(list, set, map)
java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...
- Java 将容器 Map中的内容保存到数组
import java.util.Map; import java.util.HashMap; import java.util.Map.Entry; public class mapToArr { ...
- 【Java心得总结六】Java容器中——Collection
在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...
- 【Java心得总结五】Java容器上——容器初探
在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...
随机推荐
- 重温CLR(二)生成、部署以及程序集
将类型生成到模块中 class Program { static void Main(string[] args) { Console.WriteLine("Hi"); } } 该 ...
- Spring aop 简单示例
简单的记录一下spring aop的一个示例 基于两种配置方式: 基于xml配置 基于注解配置 这个例子是模拟对数据库的更改操作添加事物 其实并没有添加,只是简单的输出了一下记录 首先看下整个例子的目 ...
- EL and JSTL(Jsp Standard Tag Libary)(转)
一.什么是 EL 语言. 表达式语言(EL)是 JSP 2.0 引入的一种计算和输出 Java 对象的简单语音. 二.EL 语言的作用. 为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAS ...
- 记录一下 C51 里的位运算
记录一下 C51 里的位运算 一篇上个世纪的文章<单片机的C语言中位操作用法>1 今天看到一个这样的运算,这相当于清了 XICFG. #define INT1IS1 0x80 #defin ...
- Linux 之 NTP 服务 服务器
我们选择第三台机器( mysql02 )为 NTF 服务器,其他机器和这台机器进行同步. 1. 检查 ntp 服务是否已经安装[root@mysql02 ~]# sudo rpm -qa | grep ...
- spring的<array>标签错误
1,复习了一下spring xml的配置 单个默认命名空间 我们看到,在配置文件中,beans,bean等元素我们是没有使用命名空间前缀的.重复限定一个要在命名空间中使用的元素或属性可能会非常麻烦.这 ...
- phpcms文档
http://www.phpcms.cn/doc/PHPCMSDocumentor/cache_module.html http://www.cnblogs.com/Braveliu/p/507493 ...
- 让Eclipse的TomcatPlugin支持Tomcat 8.x
使用tomcat插件启动项目的优势: 1.TomcatPlugin是一个免重启的开发插件,原始的Servers方式启动tomcat项目,修改xxx.ftl 或者 xxx.jsp 文件后需要重启to ...
- Jenkins的用户管理
用户管理入口 Jenkins首页有一个用户,但是只能从那查看用户列表和信息,管理用户的入口在Jenkins->系统管理->管理用户 新建用户 在管理用户左侧有一个新增用户,点击后按照表单填 ...
- tp5下通过composer实现日志记录功能
tp5实现日志记录 1.安装 psr/log composer require psr/log 它的作用就是提供一套接口,实现正常的日志功能! 我们可以来细细的分析一下,LoggerInterface ...