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(); } }
相关推荐
本篇文章将详细介绍几种常用的遍历`Map`的方法,包括使用传统迭代器(Iterator)、增强型for循环(For-Each循环)以及通过键集(Key Set)进行遍历。 #### 一、使用Iterator遍历Map 1. **通过`entrySet()`获取迭代...
以下是几种常用的parameterType参数传递方式以及#和$在Mybatis中传参的区别。 1. 使用依次顺序传参: 在这种方式中,参数按照顺序传递,SQL语句中使用#{参数索引}来引用参数。例如,有一个查询用户的方法,用户名...
本文档主要介绍了几种常用的遍历`Map`的方法,包括使用传统的迭代器、增强for循环(引入于JDK 1.5)以及对`TreeSet`进行排序的示例。 #### 二、Map的基本遍历方法 文档首先介绍了使用迭代器遍历`Map`的示例: ```...
List<Map.Entry<String, Integer>> sortedEntries = new ArrayList<>(hashMap.entrySet()); Collections.sort(sortedEntries, (e1, e2) -> valueComparator.compare(e1.getValue(), e2.getValue())); // 输出...
protected List<Content> getList(Map<String, TemplateModel> params, Environment env) throws TemplateException { Integer[] ids = DirectiveUtils.getIntArray(PARAM_IDS, params); if (ids != null) { //...
List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String element = iterator.next(); ...
- `put(K key, V value)`:将指定的键值对放入Map中。 - `get(Object key)`:返回指定键对应的值。 - `remove(Object key)`:移除指定键的映射关系。 - `containsKey(Object key)`:判断Map中是否存在指定的键。 - `...
在Java中,`Enumeration`接口是一种遍历容器的方式,但有时我们可能需要将其转换为`List`以便进行更复杂的数据处理或操作。`Collections.list(Enumeration<T> e)`方法可以实现这一功能。 ```java import java.util....
- **容器**: `<deque>`、`<list>`、`<map>`、`<multimap>`、`<queue>`、`<set>`、`<stack>` 和 `<vector>` 等。 - **算法**: `<algorithm>`、`<functional>` 和 `<numeric>` 等。 - **迭代器**: `<iterator>`、`...
在Java的`java.util`包中,集合类扮演着重要的角色,其中List和Map是最为常见的两种。List的实现例如ArrayList和Vector,它们都是可变大小的列表,适合存储和操作各种类型对象的序列。特别是ArrayList,基于动态数组...
排序算法根据其工作原理大致可以分为以下几种: - 冒泡排序 - 插入排序 - 选择排序 - 快速排序 - 归并排序 - 堆排序 - 希尔排序 - 计数排序 - 桶排序 - 基数排序 这里我们选取冒泡排序和快速排序两种常见的排序算法...
* list<T>:双向链表 * queue<T>:队列 * stack<T>:栈 * deque<T>:双端队列 * priority_queue<T>:按值排序的队列 * set<T>:集合 * multiset<T>:允许出现重复元素的集合 * map<key,val>:关联数组 * multimap...
这可以通过以下几种方式完成: 1. **Maven依赖**:如果你的项目使用Maven构建,可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections...
2. **容器**:这部分在`<vector>`, `<list>`, `<set>`, `<map>`等头文件中定义,提供了一种组织和管理数据的方式。例如,`std::vector`是一个动态数组,而`std::list`则是一个双向链表。 3. **迭代器(Iterators)*...
Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...
常见的头文件包括`<algorithm>`、`<deque>`、`<functional>`、`<iterator>`、`<vector>`、`<list>`、`<map>`、`<numeric>`、`<queue>`、`<set>`、`<stack>`和`<utility>`等。 - **示例**:使用`<vector>`头文件可以...
std::list<int> lst = {1, 2, 3, 4, 5}; auto it = lst.begin(); std::advance(it, 2); // 将迭代器移动到第三个元素的位置 std::cout << *it << std::endl; // 输出3 return 0; } ``` #### 函数对象的使用...