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容器上——容器初探
在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...
随机推荐
- MySQL免安装版安装配置、修改密码
一:MySQL的下载安装 1.1 下载 我下载的是 ZIP Archive 版的,win7 64位的机器支持使用,而且相对而言,简单.干净. 首先,进入MySQL的官方网址,依次点击Downloads ...
- Hexo博客网站再配置
这两天整理网站方面的事,本地IIS部署,个人网站,发现我的hexo做的个人网站实在很单调,于是找来资料做进一步的配置. 一.网站图标 看一下hexo\themes\modernist\layout\_ ...
- Ubantu中sublime汉化
1 启动并进入sublime主界面: 2 如图所示,点击菜单栏中“preferences”,弹出选项中找到“package control”: 3 进入下一步,选择“install package”: ...
- Python学习系列(三)(字符串)
Python学习系列(三)(字符串) Python学习系列(一)(基础入门) Python学习系列(二)(基础知识) 一个月没有更新博客了,最近工作上有点小忙,实在是没有坚持住,丢久又有感觉写的必要了 ...
- oracle 索引,组合索引
1. 组合索引 id,code 组合 id,number 组合 2. 排序cost 使用 id ,cost=0 使用 id+code cost=0 使用 id+number cost= ...
- shell编程中变量的运算 (shell 06)
主要包括以下3种 字符串操作数学运算浮点运算 一.字符串操作 字符串的连接 连接字2个字符串不需要任何连接符,挨着写即可 长度获取 expr length "hello" expr ...
- (转)Oracle执行字符串
declare v_out ); begin execute immediate 'select p_guid from c_itcomp where rownum = 1 ' into v_out; ...
- java代码 求和1+1/2+1/3+1/4+1/5+1/6+.......+1/n 的值~~~~
总结:很简单的练习: s=1+1/2+1/3+1/4+1/5+1/6+.......+1/n的值:注意这里的s是float型,绝对记住不能留整数型 即s+=1/i; package com.c2; i ...
- python开发调用基础:模块的调用&制作包&软件开发规范
一,包的调用 #!/usr/bin/env python #_*_coding:utf-8_*_ #调用 glance[1..4]\api\policy.py 路径 # policy.py 内容 # ...
- git的分布式和集中式
当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面.