package hashSet;
import java.util.*;
public class CollectionsTest
{
public static void main(String[] args)
{
ArrayList hs=new ArrayList();
hs.add(new Student(3,"main",23));
hs.add(new Student(4,"lili",21));
hs.add(new Student(2,"lucy",25));
hs.add(new Student(1,"mali",23));
hs.add(new Student(5,"xuanzi",22));
Object o=Collections.max(hs);
System.out.println("最大值:"+o);
Collections.reverse(hs);
System.out.println("反序:"+hs);
System.out.println("自然排序:(Comparable)");
System.out.println(hs);
Collections.sort(hs,new MyComparator());
System.out.println("比较器排序:(Comparator)");
System.out.println(hs);
Comparator reverse=Collections.reverseOrder(new MyComparator());
System.out.println("反转比较器排序(Comparator):");
System.out.println(hs);
}
}
package hashSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import a1.Book;
public class HashSetTest
{
public static void main(String[] args)
{
HashSet hs=new HashSet();
ArrayList l=new ArrayList();
hs.add(1);
hs.add(1);
hs.add(new Book(1,"apple"));
hs.add(new Book(1,"apple"));
l.add(new Book(1,"apple"));
l.add(new Book(1,"apple"));
Iterator it=hs.iterator(); //声明迭代器
while(it.hasNext())
{
Object o=it.next();
if(o instanceof Book)
{
((Book) o).setId(100);//修改id的值
((Book) o).setName("Java");//修改id的值
}
}
System.out.println(hs);
it.remove();
// it.remove();
System.out.println(hs);
System.out.println("调用通用迭代器:");
foreach(hs);
foreach(l);
}
//通用迭代器
public static void foreach(Collection s)
{
Iterator it=s.iterator();
while(it.hasNext())
{
Object o=it.next();
}
System.out.println(s);
}
}
package hashSet;
import java.lang.reflect.Method;
import java.util.Comparator;
public class MyComparator implements Comparator
{
@Override
public int compare(Object o1, Object o2)
{
//获取类的自描述对象
Class c1=o1.getClass();
Class c2=o2.getClass();
//Field f1,f2;
Method m1,m2;
Integer id1=null,id2=null;
try
{
//获取字段的自描述对象
//f1=c1.getDeclaredField("id");
//f2=c2.getDeclaredField("id");
//id1=f1.getInt(o1);
//id2=f2.getInt(o2);
//返回get方法的描述对象
m1=c1.getDeclaredMethod("getId");
m2=c2.getDeclaredMethod("getId");
id1=(Integer) m1.invoke(o1);
id2=(Integer) m2.invoke(o2);
//从对象中得到字段值
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return id1.compareTo(id2);
}
}
package hashSet;
public class Student implements Comparable
{
private int id;
private String name;
private int age;
public Student(int id,String name, int age)
{
super();
this.id=id;
this.name = name;
this.age = age;
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
@Override
public String toString()
{
// TODO Auto-generated method stub
return "编号:"+id+"姓名:"+name+"年龄:"+age;
}
@Override
public int compareTo(Object o)
{
// TODO Auto-generated method stub
Student s=(Student) o;
return ((Integer)this.age).compareTo(s.age);
}
}
package hashSet;
import java.util.HashSet;
import java.util.TreeSet;
import a1.Book;
public class TreeSetTest
{
public static void main(String [] args)
{
HashSet hs=new HashSet();
//hs.add(1);
Book b1=new Book(1,"apple",100);
Book b2=new Book(3,"pear",100);
Book b3=new Book(2,"pear",200);
Book b4=new Book(4,"pear",300);
Book b5=new Book(5,"pear",50);
hs.add(b1);
hs.add(b2);
hs.add(b3);
hs.add(b4);
hs.add(b5);
TreeSet ts=new TreeSet(hs);
System.out.println(ts);
System.out.println("hs:"+hs);
}
}
分享到:
相关推荐
在Java编程中,HashSet是一种不允许存储重复元素的集合,它实现了Set接口。HashSet是通过HashMap来实现的,其底层使用HashMap来保存所有元素。这种实现方式让HashSet的操作非常简单高效,因为HashSet的大部分操作,...
### HashMap与HashTable和HashSet的区别 #### 一、概述 在Java集合框架中,`HashMap`, `HashTable` 和 `HashSet` 是三个重要的数据结构,它们分别实现了`Map`接口和`Set`接口,提供了不同的功能来满足不同的编程...
### HashSet类的用法 #### 一、概述 `HashSet`是Java集合框架的一部分,它实现了`Set`接口。`HashSet`不允许重复的元素,并且不保证元素的顺序。此外,`HashSet`是非同步的,这意味着多线程环境下的安全问题需要...
在Java语言中,HashSet类是集合框架的重要组成部分,属于Set接口的一个实现。它基于哈希表的原理来存储不重复的元素,其核心在于利用哈希算法快速定位元素存储位置,从而提高数据存取的效率。本篇将详细介绍Java语言...
HashSet是Java编程语言中的一种集合类,它是一个不包含重复元素的集合,其内部实现基于HashMap。HashSet不保证元素的顺序,允许存储null元素,并且是非同步的,这意味着在多线程环境下,如果需要保证线程安全,需要...
对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSet 的源代码,可以看到如下代码:
在Java编程语言中,ArrayList和HashSet是两种常用的集合类,它们各自有其特性和应用场景。在实际开发中,理解它们的差异以及如何有效地利用它们是非常重要的。本篇将深入探讨ArrayList与HashSet的区别,并分析...
### HashSet去重原理详解 #### 一、概述 在Java编程语言中,`HashSet`是一种常用的集合类,属于`java.util`包的一部分。它不允许集合中有重复的元素,并且不保证集合中元素的顺序。`HashSet`之所以能够实现去重...
在C++编程中,HashSet是一种常用的集合数据结构,它提供了存储唯一对象的功能,类似于Java中的HashSet。虽然C++标准库中没有直接提供HashSet类,但我们可以利用其他容器,如`std::unordered_set`来实现类似的功能。...
在Java编程语言中,集合框架是处理数据的重要组成部分,其中`HashSet`和`TreeSet`是两种常用的Set接口实现类。它们各自具有独特的特性和用途,理解它们的区别对于编写高效且正确的代码至关重要。 首先,`HashSet`是...
在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...
HashSet作为Java集合框架中一个重要的非同步集合实现,它在JDK 7.0中的底层实现原理是基于HashMap来存储和操作数据的。下面就详细介绍HashSet的实现原理。 首先,HashSet是Set接口的一个实现类,它用于存储唯一性的...
关于“HashSet保证数据不重复的原理”,这涉及到HashSet内部的实现。HashSet基于HashMap实现,每个元素都是HashMap的一个键。在添加元素时,HashSet会调用对象的hashCode()方法生成哈希码,然后根据哈希码快速定位...
HashSet是其中的一种,它属于集合框架的一部分,提供了一种基于哈希表实现的无序、不可重复的元素集合。本文将深入探讨HashSet类及其相关的知识点。 首先,HashSet是由HashMap内部实现的,它利用了键值对(key-...
java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。
hashSet底层去重原理
Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足e1....HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如下所示。
利用hashset产生不重复随机数的函数,附含测试数据; 调用方法 int[] arr=noDup(max,num),max为最大的数,num为要产生的随机数个数
20220424-笔记-HashSet扩容机制
自己写的例子,关于HashSet遍历和HashMap遍历的. 感谢大家参考