java 集合 LinkedHashSet
来源:互联网 发布:太原新医医院网络平台 编辑:程序博客网 时间:2024/05/17 21:48
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* 类HashSet和LinkedHashSet都是接口Set的实现,
* 两者都不能保存重复的数据。
* 主要区别是HashSet不保证集合中元素的顺序,
* 即不能保证迭代的顺序与插入的顺序一致。
* 而LinkedHashSet按照元素插入的顺序进行迭代,
* 即迭代输出的顺序与插入的顺序保持一致。
* @author 蓝
*
*/
public class LinkHashSetTest {
public static void main(String[] args) {
Set<Integer> hashIntdger=new HashSet<Integer>();
Set<String> hashString=new HashSet<String>();
Set<Integer> linkHashInteger=new LinkedHashSet<Integer>();
Set<String> linkHashString=new LinkedHashSet<String>();
for(int i=0;i<20;i++)
{
hashIntdger.add(i);
hashString.add(String.valueOf(i));
linkHashInteger.add(i);
linkHashString.add(String.valueOf(i));
}
boolean inOder;
System.out.println("Integer类型hashSet存储顺序:");
LinkHashSetTest.printSet(hashIntdger);
inOder=LinkHashSetTest.IsSaveInOrder(hashIntdger);
System.out.println("按顺序存储?"+inOder);
System.out.println("String类型hashSet存储顺序:");
LinkHashSetTest.printSet2(hashString);
inOder=LinkHashSetTest.IsSaveInOrder2(hashString);
System.out.println("按顺序存储?"+inOder);
System.out.println("Integer类型LinkedhashSet存储顺序:");
LinkHashSetTest.printSet(linkHashInteger);
inOder=LinkHashSetTest.IsSaveInOrder(linkHashInteger);
System.out.println("按顺序存储?"+inOder);
System.out.println("String类型LinkedhashSet存储顺序:");
LinkHashSetTest.printSet2(linkHashString);
inOder=LinkHashSetTest.IsSaveInOrder2(linkHashString);
System.out.println("按顺序存储?"+inOder);
}
//添加方法
static void add(Set<Integer> set,Integer integer)
{
set.add(integer);
}
static void add(Set<String> set,String string)
{
set.add(string);
}
//遍历方法
static void printSet(Set<Integer> set)
{
// Iterator<Integer> iterator=set.iterator();
System.out.print("{");
for(Iterator<Integer> it=set.iterator();it.hasNext();)
{
System.out.print(it.next()+" ");
}System.out.println("}");
}
static void printSet2(Set<String> set)
{
// Iterator<Integer> iterator=set.iterator();
System.out.print("{");
for(Iterator<String> it=set.iterator();it.hasNext();)
{
System.out.print(it.next()+" ");
}System.out.println("}");
}
static boolean IsSaveInOrder(Set<Integer> set)
{
int i=0;
Iterator<Integer> it=set.iterator();
while(it.hasNext())
{
int ob=it.next();
if(ob!=i)
{
return false;
}
i++;
}
return true;
}
static boolean IsSaveInOrder2(Set<String> set)
{
int i=0;
Iterator<String> it=set.iterator();
while(it.hasNext())
{
String ob=it.next();
if(!ob.equals(String.valueOf(i)))
{
return false;
}
i++;
}
return true;
}
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
/**
* 类HashSet和LinkedHashSet都是接口Set的实现,
* 两者都不能保存重复的数据。
* 主要区别是HashSet不保证集合中元素的顺序,
* 即不能保证迭代的顺序与插入的顺序一致。
* 而LinkedHashSet按照元素插入的顺序进行迭代,
* 即迭代输出的顺序与插入的顺序保持一致。
* @author 蓝
*
*/
public class LinkHashSetTest {
public static void main(String[] args) {
Set<Integer> hashIntdger=new HashSet<Integer>();
Set<String> hashString=new HashSet<String>();
Set<Integer> linkHashInteger=new LinkedHashSet<Integer>();
Set<String> linkHashString=new LinkedHashSet<String>();
for(int i=0;i<20;i++)
{
hashIntdger.add(i);
hashString.add(String.valueOf(i));
linkHashInteger.add(i);
linkHashString.add(String.valueOf(i));
}
boolean inOder;
System.out.println("Integer类型hashSet存储顺序:");
LinkHashSetTest.printSet(hashIntdger);
inOder=LinkHashSetTest.IsSaveInOrder(hashIntdger);
System.out.println("按顺序存储?"+inOder);
System.out.println("String类型hashSet存储顺序:");
LinkHashSetTest.printSet2(hashString);
inOder=LinkHashSetTest.IsSaveInOrder2(hashString);
System.out.println("按顺序存储?"+inOder);
System.out.println("Integer类型LinkedhashSet存储顺序:");
LinkHashSetTest.printSet(linkHashInteger);
inOder=LinkHashSetTest.IsSaveInOrder(linkHashInteger);
System.out.println("按顺序存储?"+inOder);
System.out.println("String类型LinkedhashSet存储顺序:");
LinkHashSetTest.printSet2(linkHashString);
inOder=LinkHashSetTest.IsSaveInOrder2(linkHashString);
System.out.println("按顺序存储?"+inOder);
}
//添加方法
static void add(Set<Integer> set,Integer integer)
{
set.add(integer);
}
static void add(Set<String> set,String string)
{
set.add(string);
}
//遍历方法
static void printSet(Set<Integer> set)
{
// Iterator<Integer> iterator=set.iterator();
System.out.print("{");
for(Iterator<Integer> it=set.iterator();it.hasNext();)
{
System.out.print(it.next()+" ");
}System.out.println("}");
}
static void printSet2(Set<String> set)
{
// Iterator<Integer> iterator=set.iterator();
System.out.print("{");
for(Iterator<String> it=set.iterator();it.hasNext();)
{
System.out.print(it.next()+" ");
}System.out.println("}");
}
static boolean IsSaveInOrder(Set<Integer> set)
{
int i=0;
Iterator<Integer> it=set.iterator();
while(it.hasNext())
{
int ob=it.next();
if(ob!=i)
{
return false;
}
i++;
}
return true;
}
static boolean IsSaveInOrder2(Set<String> set)
{
int i=0;
Iterator<String> it=set.iterator();
while(it.hasNext())
{
String ob=it.next();
if(!ob.equals(String.valueOf(i)))
{
return false;
}
i++;
}
return true;
}
}
结果:
Integer类型hashSet存储顺序:
{0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 }
按顺序存储?true
String类型hashSet存储顺序:
{11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 }
按顺序存储?false
Integer类型LinkedhashSet存储顺序:
{0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 }
按顺序存储?true
String类型LinkedhashSet存储顺序:
{0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 }
按顺序存储?true
阅读全文
0 0
- Java集合之LinkedHashSet
- java 集合 LinkedHashSet
- 64、java集合-LinkedHashSet
- Java集合----LinkedHashSet的实现原理
- Java集合4:LinkedHashSet的实现原理
- Java集合深入学习总结-LinkedHashSet
- [疯狂Java]集合:Set、HashSet、LinkedHashSet
- Java集合之HashSet和LinkedHashSet
- java集合架构____HashSet、LinkedHashSet、TreeSet
- java集合框架之LinkedHashSet类
- Java集合之HashSet,LinkedHashSet源码分析
- Java LinkedHashSet
- JAVA提高教程(3)-认识Set集合之LinkedHashSet
- 深入Java集合学习系列:LinkedHashSet的实现原理
- 深入Java集合学习系列:LinkedHashSet的实现原理
- 深入Java集合学习系列:LinkedHashSet的实现原理
- 深入Java集合学习系列:LinkedHashSet的实现原理
- 深入Java集合学习系列:LinkedHashSet的实现原理
- mysql字符大小写转换
- 微信小程序中换行,空格写法
- React Error: Minified React error #119
- Linux Kernel 学习笔记17:内核与用户层通信之sockopt
- Oracle连接总结
- java 集合 LinkedHashSet
- 文章标题 CSU 1963: Feed the rabbit (斜率DP优化)
- poj1195(二维树状数组,点修改,区间求和)
- Leetcode练习<十八> 罗马数字转换为整数
- LA 4015 树形DP 在路程不超过k的情况下,求最多可到达多少节点
- 1127: 矩阵乘积
- LeetCode | 66. Plus One
- Knight Tournament
- 2017山东省赛B题(SDUT3894打表找规律!!!!!!!!!!!!!)