Java集合list,map,set区别及遍历

1.1 List、Set、Map基本区别

 1 1、List,Set都是继承Collection接口,Map不是。
 2
 3 2、List:LinkedList、ArrayList、Vector
 4
 5   Set :HashSet、LinkedHashSet、TreeSet
 6
 7   Map:HashMap、HashTable、TreeMap
 8
 9 3、List元素是有序放入,可重复。(支持for循环,迭代器遍历)
10
11   Set元素无序放入且唯一,不可重复,若重复元素则会覆盖。(不支持for循环,支持迭代。原因:元素无序,由改元素的HashCode决定,相对固定)  
12
13 4、List:动态增长,查询效率高,增删效率低(原因:因为有序,所以增加和删除元素会导致其他元素位置改变)
14
15   Set:查询效率低,增删效率高(原因:因为无序,所以增加和删除元素不会导致其他元素位置改变)
16
17 5:、线程安全:Vector、HashTable
18
19   线程不安全:LinkedList、ArrayList、HashSet、HashMap、TreeMap

1.2 List

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

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

1、添加元素

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

2、删除元素

1 for (int i = 0; i < list.size(); i++)
2 {
3     User result = list.get(i);
4     if (result.getId() == 3)
5     {
6     list.remove(result);
7     System.err.println("id: " + result.getId() + "\tname: " + result.getName());
8     }
9 }

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

 1 1、for循环
 2 for(int i=0; i<list.size();i++){
 3     System.out.println(list.get(i));
 4 }
 5 //也可以
 6 for(String str : list){
 7     System.out.println(str);
 8 }
 9 2、迭代器(Iterator)
10 Iterator it=list.iterator();
11     while(it.hashNext()){
12     System.out.println(it.next());
13 }  

1.3 Map

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

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

1、增删元素操作

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

2、循环遍历

 1  //第一种:通过Map.keySet遍历key和value,普遍使用,二次取值
 2 for (String key : map.keySet()) {
 3     System.out.println("key= "+ key + " and value= " + map.get(key));
 4 }
 5
 6 //第二种:通过Map.entrySet使用iterator遍历key和value:
 7 Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
 8 while (it.hasNext()) {
 9     Map.Entry<String, String> entry = it.next();
10     System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
11 }
12
13 //第三种:通过Map.entrySet遍历key和value,推荐,尤其是容量大时
14 for (Map.Entry<String, String> entry : map.entrySet()) {
15     System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
16 }
17 //第四种:通过Map.values()遍历所有的value,但不能遍历key
18 for (String v : map.values()) {
19     System.out.println("value= " + v);
20 }

1.4 Set

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

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

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

1 boolean isExists=false;
2 Iterator iterator=set.iterator();
3 while(it.hasNext())           {
4     String oldStr=it.next();
5     if(newStr.equals(oldStr)){
6         isExists=true;
7     }
8 } 

Set的功能方法

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

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

原文地址:https://www.cnblogs.com/zhan1995/p/8533271.html

时间: 2024-11-05 11:33:44

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

JAVA集合LIST MAP SET详解

1. 集合框架介绍 我们知道,计算机的优势在于处理大量的数据,在编程开发中,为处理大量的数据,必须具备相应的存储结构,之前学习的数组可以用来存储并处理大量类型相同的数据,但是通过上面的课后练习,会发现数组在应用中的限制:数组长度一旦确定,就无法更改:除非采用建立新数组,再将原数组内容拷贝过来:数组中只能存放指定类型的数据,操作不方便.在实际开发中,为了操作方便,JDK中提供了List集合. List集合与数组的用途非常相似,都是用来存储大量数据的,不同处有两点: 1. 数组长度在使用前必须确定,

java集合框架--Map集合

1.Map集合的概述 Map集合是将键映射到值的对象.一个映射不能包含重复的键.每个键最多只能映射到一个值. 2.Map接口和Collection接口的不同? Map集合存储元素是成对出现的,Collection集合存储元素是单独出现的. Map集合的键是唯一的,值是可重复的. Collection集合的子接口Set是唯一的,List是可重复的. Map集合的数据结构值针对键有效,和值无关,而Collection接口的数据结构是针对元素有效. 3.Map集合示例及功能 package cn; i

《java基础知识》Java集合(Map)

Java集合主要由2大体系构成,分别是Collection体系和Map体系,其中Collection和Map分别是2大体系中的顶层接口. 今天主要讲:Map主要有二个子接口,分别为HashMap.TreeMap. 继承关系图: Map的整体特点: 1. 键值对存放<key , value> 2. 遍历需要使用迭代器:Iterator 常用Map HashMap import java.util.HashMap; import java.util.Map; public class var {

Java 集合(List、Set)遍历、判断、删除元素时的小陷阱

开发中,常有场景:遍历集合,依次判断是否符合条件,如符合条件则删除当前元素. 不知不觉中,有些陷阱,不知你有没有犯. 1. 一.漏网之鱼-for循环递增下标方式遍历集合,并删除元素 如果你用for循环递增下标方式遍历集合,在遍历过程中删除元素,你可能会遗漏了某些元素.说那么说可能也说不清楚,看以下示例: import java.util.ArrayList; import java.util.List; public class ListTest_Unwork { public static v

java集合之Map

概要 前面,我们已经系统的对List进行了学习.接下来,我们先学习Map,然后再学习Set:因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的). 首先,我们看看Map架构. 如上图:(01) Map 是映射接口,Map中存储的内容是键值对(key-value).(02) AbstractMap 是继承于Map的抽象类,它实现了Map中的大部分API.其它Map的实现类可以通过继承AbstractMap来减少重复编码.

Java集合之Map接口

Map使用键值对来存储数据,将键映射到值对象,一个映射不能包含重复的键,每一个键最多只能映射到 一个值.Map接口的具体实现类:HashMap,Hashtable,TreeMap,LinkedHashMap 1)HashMap 基于哈希表(哈希表学习地址)的Map接口实现.允许使用null值和null键,不保证映射的顺序,特 别是不保证顺序恒久不变.它除了非同步和允许使用null外,与Hashtable大致相同. HashMap实现原理: 1.HashMap默认数组大小为16,加载因子为0.75

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

Map接口 Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value: Map中的键值对以Entry类型的对象实例形式存在: 建(key值)不可重复,value值可以重复,一个value值可以和很多key值形成对应关系,每个建最多只能映射到一个值. Map支持泛型,形式如:Map<K,V> Map中使用put(K key,V value)方法添加 HashMap类 HashMap是Map的一个重要实现类,也是最常用的,基于哈希表实现

java集合框架---Map总结

/* Map-- |--Hashtable:底层是哈希表数据结构,不可以存入null键null值.线程同步. |--HashMap:底层是哈希表数据结构,可以存入null键null值.线程不同步. |--TreeMap:底层是二叉树数据结构,线程不同步.可以给键排序 */ package pack; import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Set;

Java集合(List Map)

异常:try catch finally throw throws自定义异常:创建一个普通的Java类,让它继承Exception,RuntimeException Exception分为checked exception和runtime exception,checked exception表示需要强制去处理的异常,即throw异常之后,需要立即处理该异常,要么try-catch,要么抛给上一层去处理,否则会报错"Unhandled exception type MyException&quo