Java HashSet和LinkedHashSet的用法
Java HashSet和LinkedHashSet的用法
类HashSet和LinkedHashSet都是接口Set的实现,两者都不能保存重复的数据。主要区别是HashSet不保证集合中元素的顺序,即不能保证迭代的顺序与插入的顺序一致。
而LinkedHashSet按照元素插入的顺序进行迭代,即迭代输出的顺序与插入的顺序保持一致。
以下是HastSet和LinkedHashSet的用法示例:
- import java.util.Collections;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.LinkedHashSet;
- import java.util.Set;
- public class JavaTest {
- // HashSet不保证集合的迭代顺序;也许在某些时间迭代的顺序与插入顺序一致,但是不保证该顺序恒久不变。
- private static Set<Integer> mSetInt = new HashSet<Integer>();
- private static Set<String> mSetString = new HashSet<String>();
- // LinkedHashSet按照元素插入的顺序进行迭代,LinkedHashSet不是线程安全的。
- private static Set<Integer> mLinkedSetInt = Collections.synchronizedSet(new LinkedHashSet<Integer>());
- private static Set<String> mLinkedSetString = Collections.synchronizedSet(new LinkedHashSet<String>());
- /**
- * @param args
- */
- public static void main(String[] args) {
- for (int i = 0; i < 50; i++) {
- mSetInt.add(i);
- mSetString.add(String.valueOf(i));
- mLinkedSetInt.add(i);
- mLinkedSetString.add(String.valueOf(i));
- }
- Iterator<Integer> setIntIt = mSetInt.iterator();
- System.out.println("The sequence of HashSet for Integer:");
- while(setIntIt.hasNext()) {
- System.out.print(setIntIt.next() + " ");
- }
- System.out.println();
- System.out.println("The sequence of HashSet for String:");
- Iterator<String> setStringIt = mSetString.iterator();
- while(setStringIt.hasNext()) {
- System.out.print(setStringIt.next() + " ");
- }
- System.out.println();
- System.out.println("The sequence of LinkedHashSet for Integer:");
- Iterator<Integer> linkedSetIntIt = mLinkedSetInt.iterator();
- while(linkedSetIntIt.hasNext()) {
- System.out.print(linkedSetIntIt.next() + " ");
- }
- System.out.println();
- System.out.println("The sequence of LinkedHashSet for String:");
- Iterator<String> linkedSetStringIt = mLinkedSetString.iterator();
- while(linkedSetStringIt.hasNext()) {
- System.out.print(linkedSetStringIt.next() + " ");
- }
- System.out.println();
- }
- }
输出结果如下:
The sequence of HashSet for Integer:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 16 19 18 21 20 23 22 25 24 27 26 29 28 31 30 34 35 32 33 38 39 36 37 42 43 40 41 46 47 44 45 49 48
The sequence of HashSet for String:
35 36 33 34 39 37 38 43 42 41 40 22 23 24 25 26 27 28 29 3 2 1 0 7 30 6 5 32 4 31 9 8 19 17 18 15 16 13 14 11 12 21 20 49 48 45 44 47 46 10
The sequence of LinkedHashSet for Integer:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
The sequence of LinkedHashSet for String:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
从输出结果看,如果HastSet中保存的是Integer类型和String类型的对象,迭代的顺序与插入的顺序不一致,其中String类型的元素不一致的情况比Integer类型的元素要明显的多。
map<string,map<string,string>>:map中map用法示例
include <iostream>
#include <map>
using namespace std;
int main()
{
map<string,map<string,string> > mapmaps;
map<string,string> mapmap;
mapmap.insert(pair<string,string>("ysl","ysh"));
mapmaps.insert(pair<string,map<string,string> >("ysy",mapmap));
cout<<mapmaps.begin()->first<<endl;
cout<<mapmaps.begin()->second.begin()->first<<endl;
cout<<mapmaps.begin()->second.begin()->second<<endl;
return 0;
}
结果: ysy ysl ysh Process returned 0 (0x0) execution time : 0.250 s Press any key to continue.
Java HashSet和LinkedHashSet的用法的更多相关文章
- Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合与Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- 复习java基础第三天(集合:Collection、Set、HashSet、LinkedHashSet、TreeSet)
一.Collection常用的方法: Java 集合可分为 Set.List 和 Map 三种体系: Set:无序.不可重复的集合. List:有序,可重复的集合. Map:具有映射关系的集合. Co ...
- Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及区别
本篇博客主要讲解Set接口的三个实现类HashSet.LinkedHashSet.TreeSet的使用方法以及三者之间的区别. 注意:本文中代码使用的JDK版本为1.8.0_191 1. HashSe ...
- Java中的集合HashSet、LinkedHashSet、TreeSet和EnumSet(二)
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合于Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedList Set有两个实现类:HashSet和LinkedHashSet AbstractSet实现了Set
List,Set,Map在java.util包下都是接口 List有两个实现类:ArrayList和LinkedListSet有两个实现类:HashSet和LinkedHashSetAbstractS ...
- Java自学-集合框架 HashSet、LinkedHashSet、TreeSet之间的区别
HashSet. LinkedHashSet.TreeSet之间的区别 步骤 1 : HashSet LinkedHashSet TreeSet HashSet: 无序 LinkedHashSet: ...
- [Java数据结构]HashSet,LinkedHashSet,TreeeSet
Java中Set表示一个不包括重复元素的集合,它有HashSet,LinkedHashSet,TreeeSet三种常用实现. HashSet是Set的最常用实现,它常被用来清除重复元素. 例程: Se ...
- Java Set 常用集合 HashSet、LinkedHashSet、TreeSet
Java 中的 Set 是非常常用的数据类型.Set 是无序的 Collection,Java Set 有三个常用的实现类,分别是:HashSet.LinkedHashSet.TreeSet 本文基于 ...
- Leetcode: LFU Cache && Summary of various Sets: HashSet, TreeSet, LinkedHashSet
Design and implement a data structure for Least Frequently Used (LFU) cache. It should support the f ...
随机推荐
- django随笔说明
最近学习了vamei的快速Python教程,想着语法学了不用就要忘记,总要拿点东西来练练手,然后又开始学习Django,也算是顺势而为吧. 现在学Django,是跟着教程djangobook学的,内容 ...
- linux 如何禁用账号和解除禁用账号
把账号禁用可以有几个方法:1. # usermod -L <username> # usermod -U <username> // 解除禁用2. 修改/etc/passwd文 ...
- python作业day4计算器
思路: 用循环提取最里面的括号,再进行运算 运算时利用正则表达式寻找相应的运算符 先进行乘除,再进行加减 (参考武sir和金角大王的代码) 流程图: 代码: #!/usr/bin/env python ...
- rdlc部署zt
原文:rdlc部署zt 偶然间遇到“ 未能加载文件或程序集microsoft.reportviewer.winforms ……”的一个错误,以前web是遇到过,没想到winform部署也会遇到.找了半 ...
- JavaEE Tutorials (23) - 资源适配器和契约
23.1什么是资源适配器362 23.1.1管理契约363 23.1.2通用工作上下文契约364 23.1.3出站和入站契约36423.2元数据注解36523.3公共客户端接口36623.4对Java ...
- editplus使用:非法字符: \65279
众所周知,在跨程序的工程中,统一编码是至关重要的,而目前最普遍的则是统一采用“utf8”编码方案. 但是在采用utf8方案的时候,请注意编辑器的自作聪明. 比如editplus. 原因就在于某些编辑器 ...
- Windows下使用XManager访问Ubuntu 11.04的设置方法
1.Download the attached file and upload it to the server. And, enter the following command to update ...
- JQuery(下)
26.jQuery 中的 DOM 操作 )DOM(Document Object Model—文档对象模型):一种与浏览器, 平台, 语言无关的接口, 使用该接口可以轻松地访问页面中所有的标准组件 ) ...
- linux 学习之九、Linux 磁盘与文件系统管理(2)
原文地址:http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem.php#filesys 磁盘挂载与卸除 挂载Ext2/Ext3文件系统 范例一: ...
- iOS 唯一设备号
https://github.com/fabiocaccamo/FCUUID 目前比较好的解决方案.