`
JQXChao
  • 浏览: 18340 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Map<K, V>的排序和List的几种遍历方式

    博客分类:
  • JAVA
阅读更多
package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * 
 * @author qxch0372@163.com
 * Map<K, V>的排序
 * List的几种遍历方式
 *
 */
public class Test4 {

	/**
	 * 对于Map<K, V>的排序
	 */
	static void testMap() {
		Map<String, Integer> map = new HashMap<String, Integer>();
		map.put("key1", 5);
		map.put("key2", 2);
		map.put("key3", 6);
		map.put("key4", 9);
		map.put("key5", 8);
		map.put("key6", 12);
		List<Map.Entry<String, Integer>> list = 
			new ArrayList<Map.Entry<String, Integer>>(map.entrySet());
		Comparator<Map.Entry<String, Integer>> comparator = 
			new Comparator<Map.Entry<String, Integer>>() {
			public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
				return o1.getValue()-o2.getValue();
			}
		};
		Collections.sort(list, comparator);
		for(Map.Entry<String, Integer> entry : list) {
			System.out.println(entry.getKey() + ":" + entry.getValue());
		}
	}
	
	/**
	 * 关于List的几种遍历方式
	 */
	static void testList() {
		List<Long> list = new ArrayList<Long>();
        for(Long i=0l;i<3100000l;i++){ 
            list.add(i); 
        }
        
        Long oneOk = oneMethod(list); 
        Long twoOk = twoMethod(list); 
        Long threeOk = threeMethod(list); 
        Long fourOk = fourMethod(list);
        
        System.out.println("One:" + oneOk); 
        System.out.println("Two:" + twoOk); 
        System.out.println("Three:" + threeOk); 
        System.out.println("four:" + fourOk);
	}

	public static Long oneMethod(List<Long> lists){
        Long timeStart = System.currentTimeMillis(); 
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<lists.size();i++) { 
            sb.append(lists.get(i));
        } 
        Long timeStop = System.currentTimeMillis();
        sb = null;
        return timeStop -timeStart ; 
    } 
    
    public static Long twoMethod(List<Long> lists){ 
        Long timeStart = System.currentTimeMillis(); 
        StringBuilder sb = new StringBuilder();
        for(Long string : lists) {
        	sb.append(string);
        } 
        Long timeStop = System.currentTimeMillis(); 
        sb = null;
        return timeStop -timeStart ; 
    } 
    
    public static Long threeMethod(List<Long> lists){      
        Long timeStart = System.currentTimeMillis(); 
        StringBuilder sb = new StringBuilder();
        Iterator<Long> it = lists.iterator(); 
        while (it.hasNext()) { 
            sb.append(it.next()); 
        } 
        Long timeStop = System.currentTimeMillis(); 
        sb = null;
        return timeStop -timeStart ; 
    }    
    
    public static Long fourMethod(List<Long> lists){     
        Long timeStart = System.currentTimeMillis(); 
        StringBuilder sb = new StringBuilder();
        for(Iterator<Long> i = lists.iterator(); i.hasNext();)    { 
            sb.append(i.next()); 
        } 
        Long timeStop = System.currentTimeMillis(); 
        sb = null;
        return timeStop -timeStart ; 
    }
    
    public static void main(String[] args) {
//    	testMap();
	    testList();
	}
	   
}

 

分享到:
评论

相关推荐

    java Map 遍历方法

    本篇文章将详细介绍几种常用的遍历`Map`的方法,包括使用传统迭代器(Iterator)、增强型for循环(For-Each循环)以及通过键集(Key Set)进行遍历。 #### 一、使用Iterator遍历Map 1. **通过`entrySet()`获取迭代...

    Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式.pdf

    以下是几种常用的parameterType参数传递方式以及#和$在Mybatis中传参的区别。 1. 使用依次顺序传参: 在这种方式中,参数按照顺序传递,SQL语句中使用#{参数索引}来引用参数。例如,有一个查询用户的方法,用户名...

    java遍历特例

    本文档主要介绍了几种常用的遍历`Map`的方法,包括使用传统的迭代器、增强for循环(引入于JDK 1.5)以及对`TreeSet`进行排序的示例。 #### 二、Map的基本遍历方法 文档首先介绍了使用迭代器遍历`Map`的示例: ```...

    Hashmap 通过对VALUE排序 源代码

    List&lt;Map.Entry&lt;String, Integer&gt;&gt; sortedEntries = new ArrayList&lt;&gt;(hashMap.entrySet()); Collections.sort(sortedEntries, (e1, e2) -&gt; valueComparator.compare(e1.getValue(), e2.getValue())); // 输出...

    cms后台管理

    protected List&lt;Content&gt; getList(Map&lt;String, TemplateModel&gt; params, Environment env) throws TemplateException { Integer[] ids = DirectiveUtils.getIntArray(PARAM_IDS, params); if (ids != null) { //...

    Map、Set、Iterator迭代详解

    List&lt;String&gt; list = new ArrayList&lt;&gt;(); list.add("A"); list.add("B"); list.add("C"); Iterator&lt;String&gt; iterator = list.iterator(); while (iterator.hasNext()) { String element = iterator.next(); ...

    集合概述set、List、Map

    - `put(K key, V value)`:将指定的键值对放入Map中。 - `get(Object key)`:返回指定键对应的值。 - `remove(Object key)`:移除指定键的映射关系。 - `containsKey(Object key)`:判断Map中是否存在指定的键。 - `...

    java中的集合类的几个鲜为人知的实用方法.doc

    在Java中,`Enumeration`接口是一种遍历容器的方式,但有时我们可能需要将其转换为`List`以便进行更复杂的数据处理或操作。`Collections.list(Enumeration&lt;T&gt; e)`方法可以实现这一功能。 ```java import java.util....

    C标准模块库STL及其程序设计实用PPT学习教案.pptx

    - **容器**: `&lt;deque&gt;`、`&lt;list&gt;`、`&lt;map&gt;`、`&lt;multimap&gt;`、`&lt;queue&gt;`、`&lt;set&gt;`、`&lt;stack&gt;` 和 `&lt;vector&gt;` 等。 - **算法**: `&lt;algorithm&gt;`、`&lt;functional&gt;` 和 `&lt;numeric&gt;` 等。 - **迭代器**: `&lt;iterator&gt;`、`...

    Java Map 集合类简介

    在Java的`java.util`包中,集合类扮演着重要的角色,其中List和Map是最为常见的两种。List的实现例如ArrayList和Vector,它们都是可变大小的列表,适合存储和操作各种类型对象的序列。特别是ArrayList,基于动态数组...

    JAVA面试笔试题

    排序算法根据其工作原理大致可以分为以下几种: - 冒泡排序 - 插入排序 - 选择排序 - 快速排序 - 归并排序 - 堆排序 - 希尔排序 - 计数排序 - 桶排序 - 基数排序 这里我们选取冒泡排序和快速排序两种常见的排序算法...

    STL标准库函数(形式及用法)

    * list&lt;T&gt;:双向链表 * queue&lt;T&gt;:队列 * stack&lt;T&gt;:栈 * deque&lt;T&gt;:双端队列 * priority_queue&lt;T&gt;:按值排序的队列 * set&lt;T&gt;:集合 * multiset&lt;T&gt;:允许出现重复元素的集合 * map&lt;key,val&gt;:关联数组 * multimap...

    commons-collections4-4.1.jar

    这可以通过以下几种方式完成: 1. **Maven依赖**:如果你的项目使用Maven构建,可以在pom.xml文件中添加如下依赖: ```xml &lt;dependency&gt; &lt;groupId&gt;org.apache.commons&lt;/groupId&gt; &lt;artifactId&gt;commons-collections...

    C++标准库和头文件名字

    2. **容器**:这部分在`&lt;vector&gt;`, `&lt;list&gt;`, `&lt;set&gt;`, `&lt;map&gt;`等头文件中定义,提供了一种组织和管理数据的方式。例如,`std::vector`是一个动态数组,而`std::list`则是一个双向链表。 3. **迭代器(Iterators)*...

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...

    算法周报.pdf

    常见的头文件包括`&lt;algorithm&gt;`、`&lt;deque&gt;`、`&lt;functional&gt;`、`&lt;iterator&gt;`、`&lt;vector&gt;`、`&lt;list&gt;`、`&lt;map&gt;`、`&lt;numeric&gt;`、`&lt;queue&gt;`、`&lt;set&gt;`、`&lt;stack&gt;`和`&lt;utility&gt;`等。 - **示例**:使用`&lt;vector&gt;`头文件可以...

    C++标准程序库、c++程序库

    std::list&lt;int&gt; lst = {1, 2, 3, 4, 5}; auto it = lst.begin(); std::advance(it, 2); // 将迭代器移动到第三个元素的位置 std::cout &lt;&lt; *it &lt;&lt; std::endl; // 输出3 return 0; } ``` #### 函数对象的使用...

Global site tag (gtag.js) - Google Analytics