1.1 List、Set、Map基本区别

 1、List,Set都是继承Collection接口,Map不是。

 2、List:LinkedList、ArrayList、Vector

   Set :HashSet、LinkedHashSet、TreeSet

   Map:HashMap、HashTable、TreeMap

 3、List元素是有序放入,可重复。(支持for循环,迭代器遍历)

   Set元素无序放入且唯一,不可重复,若重复元素则会覆盖。(不支持for循环,支持迭代。原因:元素无序,由改元素的HashCode决定,相对固定)  

 4、List:动态增长,查询效率高,增删效率低(原因:因为有序,所以增加和删除元素会导致其他元素位置改变)

   Set:查询效率低,增删效率高(原因:因为无序,所以增加和删除元素不会导致其他元素位置改变)

 5:、线程安全:Vector、HashTable

   线程不安全:LinkedList、ArrayList、HashSet、HashMap、TreeMap

1.2 List

List的特征是其元素以线性方式存储,集合中可以存放重复对象。

  • ArrayList() : 代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与删除元素的速度慢。
  • LinkedList(): 在实现中采用链表数据结构。插入和删除速度快,访问速度慢。

1、添加元素

 List<String> list=new ArrayList<String>();
list.add("一个元素");

2、删除元素

 for (int i = 0; i < list.size(); i++)
{
User result = list.get(i);
if (result.getId() == 3)
{
list.remove(result);
System.err.println("id: " + result.getId() + "\tname: " + result.getName());
}
}

3、最基本的两种检索集合中的所有对象的方法:

 1、for循环
for(int i=0; i<list.size();i++){
System.out.println(list.get(i));
}
//也可以
for(String str : list){
System.out.println(str);
}
2、迭代器(Iterator)
Iterator it=list.iterator();
while(it.hashNext()){
System.out.println(it.next());
}

1.3 Map

Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。

Map没有继承于Collection接口,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。

1、增删元素操作

 Map<String, String> map = new HashMap<String, String>();
map.put("1", "a"); //添加key为1,值为a的元素
map.remove("1"); //删除key为1的所有元素

2、循环遍历

  //第一种:通过Map.keySet遍历key和value,普遍使用,二次取值
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
} //第二种:通过Map.entrySet使用iterator遍历key和value:
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
} //第三种:通过Map.entrySet遍历key和value,推荐,尤其是容量大时
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四种:通过Map.values()遍历所有的value,但不能遍历key
for (String v : map.values()) {
System.out.println("value= " + v);
}

1.4 Set

Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。 Set接口主要实现了两个实现类:

    • HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快。存入HashSet的对象必须定义hashCode()
    • TreeSet :TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。
    • LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
 Set set=new HashSet();
String s1=new String("hello");
String s2=s1;
String s3=new String("world");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size()); //打印集合中对象的数目 为 2。

Set 的 add()方法是如何判断对象是否已经存放在集合中?

 boolean isExists=false;
Iterator iterator=set.iterator();
while(it.hasNext()) {
String oldStr=it.next();
if(newStr.equals(oldStr)){
isExists=true;
}
}

Set的功能方法

Set具有与Collection完全一样的接口,因此没有任何额外的功能,不像前面有两个不同的List。实际上Set就是Collection,只 是行为不同。(这是继承与多态思想的典型应用:表现不同的行为。)Set不保存重复的元素(至于如何判断元素相同则较为负责)

Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。加入Set的元素必须定义equals()方法以确保对象的唯一性。Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。

Java集合list,map,set区别及遍历的更多相关文章

  1. Java集合和数组的区别

    参考:Java集合和数组的区别 集合和容器都是Java中的容器. 区别 数组特点:大小固定,只能存储相同数据类型的数据 集合特点:大小可动态扩展,可以存储各种类型的数据   转换 数组转换为集合: A ...

  2. java集合 之 Map集合

    Map用于保存具有映射关系的数据,具有两组值:一组用于保存Map中的key:另一组用于保存Map中的value,形成key-value的存储形式. Map集合中包含的一些方法: void clear( ...

  3. JAVA集合LIST MAP SET详解

    1. 集合框架介绍 我们知道,计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,之前学习的数组可以用来存储并处理大量类型相同的数据,但是通过上面的课后练习,会发现 ...

  4. java集合框架——Map

    一.概述 1.Map是一种接口,在JAVA集合框架中是以一种非常重要的集合.2.Map一次添加一对元素,所以又称为“双列集合”(Collection一次添加一个元素,所以又称为“单列集合”)3.Map ...

  5. Java集合框架——Map接口

    第三阶段 JAVA常见对象的学习 集合框架--Map集合 在实际需求中,我们常常会遇到这样的问题,在诸多的数据中,通过其编号来寻找某一些信息,从而进行查看或者修改,例如通过学号查询学生信息.今天我们所 ...

  6. Java集合中Map接口的使用方法

    Map接口 Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value: Map中的键值对以Entry类型的对象实例形式存在: 建(key值 ...

  7. Java集合之Map和Set

    以前就知道Set和Map是java中的两种集合,Set代表集合元素无序.不可重复的集合:Map是代表一种由多个key-value对组成的集合.然后两个集合分别有增删改查的方法.然后就迷迷糊糊地用着.突 ...

  8. Java集合之Map和Set源码分析

    以前就知道Set和Map是java中的两种集合,Set代表集合元素无序.不可重复的集合:Map是代表一种由多个key-value对组成的集合.然后两个集合分别有增删改查的方法.然后就迷迷糊糊地用着.突 ...

  9. Java 集合之 Map

    Map 就是另一个顶级接口了,总感觉 Map 是 Collection 的子接口呢.Map 主要用于表示那些含有映射关系的数据,存储的是一组一组的键值对.Map 是允许你将某些对象与其它一些对象关联起 ...

随机推荐

  1. 一:requests爬虫基础

    一,什么是爬虫? 描述: 本质是一个自动化程序,一个模拟浏览器向某一个服务器发送请求获取响应资源的过程. 爬虫的基本流程 robots.txt协议 编写一个robots.txt的协议文件来约束爬虫程序 ...

  2. [转]VS中的路径宏 OutDir、ProjectDir、SolutionDir各种路径含义

    转自 http://blog.csdn.net/restraint/article/details/39934401 说明 $(RemoteMachine) 设置为“调试”属性页上“远程计算机”属性的 ...

  3. kotlin - 空安全

    空安全设计的操作符号 操作符 作用 ? 可空操作符,声明该值可为空 ?. 安全调用操作符       b?.length 如果b非空,就返回b.length,否则返回 null !! 非空断言运算符, ...

  4. 基于虹软 2.0 人脸识别猜年龄 java版 demo

    首先感谢虹软,是你们提供这么好的SDK支撑了我们的想象力! 这是一个用javav编写的可视化应用,用户通过自己的脸和计算机进行交互,计算机则通过萌萌女孩的语音和用户对话.核心程序就是利用ArcFace ...

  5. Python 新建程序

    1.建立一个新的文件夹 2.建一个包 3.建一个程序项目 4.默认模板配置

  6. 第 7 章 多主机管理 - 045 - 安装 Docker Machine

    安装 Docker Machine 先安装docker 官方安装docker-machine的文档地址:https://docs.docker.com/machine/install-machine/ ...

  7. [jQuery] 通过ajax保存到服务器,成功显示信息.

    保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: "some.php", data: " ...

  8. every day a practice —— morning(4)

    If there’s one thing New Yorkers love more than discovering a new secret remedy, it’s telling other ...

  9. No address associated with hostname

    java.net.UnknownHostException: Unable to resolve host "www.baidu.com": No address associat ...

  10. 使用visual studio把xsd文件转成xml格式文件

    使用visual studio把xsd文件转成xml格式文件 最近一段时间都在做Amazon的mws api的对接工作,mws api的描述文件都是使用的xsd文件来进行的,之前确实也没有接触过,也花 ...