资讯专栏INFORMATION COLUMN

List&Map&Set的操作和遍历

lavnFan / 578人阅读

摘要:的操作和遍历的三大集合即。的实现类原理比较简单,比较复杂,而其实是基于的一种实现。

List&Map&Set的操作和遍历

Java的三大集合即:Set、List、Map。

Set:代表无序、不可重复的集合,常用的有HashSet(哈希表实现)、TreeSet(红黑树实现);

List:代表有序、可以重复的集合,比较常用的有ArrayList(数组实现)、LinkedList(链表实现);

Map:代表具有映射关系的集合,常用的有HashMap(哈希表实现)、TreeMap(红黑树实现);

Java5以后又增加了Queue体系集合,代表一种队列集合实现,这里先不介绍。

List的实现类原理比较简单,Map比较复杂,而Set其实是基于Map的一种实现。

下面从各个集合的基本操作介绍一下,分别选取HashSet、ArrayList、HashMap三个典型的实现类:

1. HashSet
/** 
 * HashSet的增删遍历
 * @author wangjun 
 * @email  scuwangjun@hotmail.com
 * @time   2018年4月6日 下午2:40:33 
 */
public class HashSetOperation {

    public static void main(String[] args) {
        //初始化
        HashSet set = new HashSet<>();
        //增
        set.add("key1");
        set.add("key2");
        set.add("key3");
        //删
        set.remove("key1");
        //遍历1
        //使用set.descendingIterator()方法可以反向遍历
        System.out.println("HashSet遍历1,使用Iterator:");
        Iterator it = set.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
        //遍历2
        System.out.println("HashSet遍历2,使用for:");
        for(String str: set) {
            System.out.println(str);
        }
    }

运行结果:

HashSet遍历1,使用Iterator:
key2
key3
HashSet遍历2,使用for:
key2
key3
2.ArrayList
/** 
 * ArrayList的增删查改,遍历
 * @author wangjun 
 * @email  scuwangjun@hotmail.com
 * @time   2018年4月6日 下午2:25:43 
 */
public class ArrayListOperation {

    public static void main(String[] args) {
        //初始化
        List list = new ArrayList<>();
        //增
        list.add("str1");
        list.add("str2");
        list.add("str3");
        //删
        list.remove(1);
        //查
        System.out.println("list的第二个元素是:" + list.get(1));
        //改
        list.set(0, "str11");
        System.out.println("最终的list:" + list.toString());
        //遍历1,使用for
        System.out.println("LinkedList遍历1,使用for:");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        //遍历2,使用增强for
        System.out.println("LinkedList遍历1,使用增强for:");
        for(String str: list) {
            System.out.println(str);
        }
        //遍历3,使用Iterator,集合类的通用遍历方式
        System.out.println("LinkedList遍历3,使用Iterator:");
        Iterator it = list.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }

}

运行结果:

list的第二个元素是:str3
最终的list:[str11, str3]
LinkedList遍历1,使用for:
str11
str3
LinkedList遍历1,使用增强for:
str11
str3
LinkedList遍历3,使用Iterator:
str11
str3
3.HashMap
/** 
 * hashMap的增删查改
 * 无序
 * key相当于set,不可重复
 * value相当于list,可重复
 * @author wangjun 
 * @email  scuwangjun@hotmail.com
 * @time   2018年4月6日 下午2:30:31 
 */
public class HashMapOperation {

    public static void main(String[] args) {
        //初始化
        HashMap map = new HashMap<>();
        //增
        map.put("key1", "value1");
        map.put("key2", "value2");
        map.put("key3", "value3");
        //删
        map.remove("key2");
        //查
        System.out.println("key1对应的valve为:" + map.get("key1"));
        //改
        map.replace("key3", "value33");
        System.out.println("最终的map是:" + map.toString());
        //遍历1,取出map中所有的key组成一个set
        System.out.println("HashMap遍历1,取出map中所有的key组成一个set:");
        for(String key: map.keySet()) {
            System.out.println("key:" + key + ",value:" + map.get(key));
        }
        //遍历2,取出key组成set后,通过Iterator遍历key
        System.out.println("HashMap遍历2,取出key组成set后,通过Iterator遍历key:");
        Iterator it = map.keySet().iterator();
        while(it.hasNext()) {
            String key = it.next();
            String value = map.get(key);
            System.out.println("key:" + key + ",value:" + value);
        }
        //遍历3,取出map中实际存储的数据结构--Map.Entry,在HashMap中使用的是Node静态内部类
        //推荐这种,尤其是数据很大时
        System.out.println("HashMap遍历3,通过Map.Entry:");
        Set> entry = map.entrySet();
        for(Map.Entry entryItem: entry) {
            String key = entryItem.getKey();
            String value = entryItem.getValue();
            System.out.println("key:" + key + ",value:" + value);
        }
        //遍历4,只能遍历value,不能遍历key,相当于取出map中左右的value组成一个list
        System.out.println("HashMap遍历4,只遍历value:");
        for(String value: map.values()) {
            System.out.println("value:" + value);
        }
    }

}

运行结果:

key1对应的valve为:value1
最终的map是:{key1=value1, key3=value33}
HashMap遍历1,取出map中所有的key组成一个set:
key:key1,value:value1
key:key3,value:value33
HashMap遍历2,取出key组成set后,通过Iterator遍历key:
key:key1,value:value1
key:key3,value:value33
HashMap遍历3,通过Map.Entry:
key:key1,value:value1
key:key3,value:value33
HashMap遍历4,只遍历value:
value:value1
value:value33

可以看到:

遍历Set一般常用2种方式;

遍历List一般常用3种方式;

遍历Map一般常用4种方式;

根据使用场景,选择合适的遍历方式。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68967.html

相关文章

  • [LintCode] Topological Sorting [BFS &amp; DFS]

    摘要:当队列非空时,拿出最后放入的元素。若减后入度为,则这个结点遍历完成,放入结果数组和队列。递归函数去遍历的,继续在中标记,使得所有点只遍历一次。最深的点最先,根结点最后,加入结果数组的头部处。 Problem Given an directed graph, a topological order of the graph nodes is defined as follow: For ...

    draveness 评论0 收藏0
  • Java编程基础19——Map集合&amp;斗地主案例

    摘要:使用默认随机源对指定列表进行置换。将集合排序使用二分搜索法搜索指定列表,以获得指定对象根据元素的自然顺序,返回给定的最大元素。 1_Map集合概述和特点 A:Map接口概述 查看API可以知道: 将键映射到值的对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 B:Map接口和Collection接口的不同 Map是双列的,Collection是单列的 Map...

    ygyooo 评论0 收藏0
  • 六个Python编程最受用内置函数使用详解

      小编写这篇文章的话,主要是给大家做出一个解答,解答一些Python常见问题,比如关于编程函数的一些问题,哪些函数编程是最受用的呢?下面就给大家详细介绍一下。  合理的使用Python这门工具,能够大大的提高其工作效率,起到事半功倍的作用。  1.Map函数  map函数可以使用另外一个函数转换整个可迭代对象的函数,包括将字符串转换为数字、数字的四舍五入等等。  之所以使用map函数来完成这些事...

    89542767 评论0 收藏0
  • JavaScript字典与集合详解

      今天和大家讲讲JS字典。所谓的JS字典其实和显示中常用汉语字典不一样,编程中的字典类似,两者都有一个特点,就是一一对应(yi yi dui ying),或者说是映射。  日常中的字典通常以**【键,值】** 对的形成存储,主要是由于以键值对的形式存储,这样的话更有利于可以通过key来获取value  比如存储用户信息:  {   'username':'一碗周'...

    3403771864 评论0 收藏0
  • Set &amp; Map:新生数据集合及其弱引用衍生

    摘要:前言新增了两种基本的原生数据集合和加上和现在共有四种,以及由两者衍生出的弱引用集合和。其本身是生成实例数据集合的构造函数,可以接受一个数组或具有接口的数据结构作为参数用来初始化。返回键值对的遍历器对象,键值对为键名键值。 前言 ES6新增了两种基本的原生数据集合:Set和Map(加上Array和Object现在共有四种),以及由两者衍生出的弱引用集合:WeakSet和WeakMap。从...

    AprilJ 评论0 收藏0

发表评论

0条评论

lavnFan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<