HashSet存入对象怎么取出对象的值

2024-05-09

1. HashSet存入对象怎么取出对象的值

你是想说输出num和name么;两种方法:
一
 Iterator it = hs.iterator();
  while(it.hasNext())
   Student s = (Student)it.next();
   System.out.println(s.num+"NAME : "+s.name);
 }
二 在Student类中复写toString()方法:
class Student{
 int num;
 String name;
 Student(int num,String name){
  this.num = num;
  this.name = name;
 }
 public String toStrong(){
  return "num :"+this.num +" name: "+this.name ;
 }
} 
采用二方法较佳,此时直接输出对象即可;
while(it.hasNext())
   Student s = (Student)it.next();//需要强制转换
   System.out.println(s);
 }

HashSet存入对象怎么取出对象的值

2. java中HashSet怎样遍历取出里面的值?给个例子~~

HashSet set=new HashSet();
		set.add("1");
		set.add("2");
		set.add("3");
		Iterator iterator=set.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
控制台输出:
3
2
1
对于集合这块的类都可以这样写的,比如你把第一行换成:
ArrayList set=new ArrayList();
后面的程序不动,一样可以遍历输出的。
不太懂的话可以百度Iterator的用法和原理

3. java中从hashset中取元素

package test;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Func{
//我假定是String类型的
	public static Set set = new HashSet();
	public static void main(String[] args){
		add();
		show();
	}
	public static void add(){
		set.add("小白");
		set.add( "java");
	}
	public static void show(){
//迭代的方法
		Iterator it = set.iterator();
//这个set是否有下一个
		while(it.hasNext()){
//有就把下一个取出来
			String str = (String) it.next();
			System.out.println(str);
		}
	}
}

java中从hashset中取元素

4. (c#)HashSet怎么迭代怎么能按存的顺序读取?

迭代器本身读取的时候就是随机的!要想按自己存的顺序读取还真没研究,我是菜鸟! 
读出来的时候自己排序呗!
你的数据都加ID了吧!
按照ID顺序排一下就一句话的事情吧!
我没有试过,你自己动手做做吧!

5. JAVA中hashset基础知识

此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。 此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。
      注意,此实现不是同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。这通常是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来“包装” set。最好在创建时完成这一操作,以防止对该 set 进行意外的不同步访问: Set s = Collections.synchronizedSet(new HashSet(...)); 此类的 iterator 方法返回的迭代器是快速失败 的:在创建迭代器之后,如果对 set 进行修改,除非通过迭代器自身的 remove 方法,否则在任何时间以任何方式对其进行修改,Iterator 都将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不冒将来在某个不确定时间发生任意不确定行为的风险。 注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器在尽最大努力抛出 ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误做法:迭代器的快速失败行为应该仅用于检测 bug。

JAVA中hashset基础知识

6. C# HashSet 随机取值

Dictionary dic=new Dictionary();
dic.add(1,HashSet[1]);
dic.add(2,HashSet[2]);
.......
但后你在MSDN里看一下Random 的使用方法
随机生成的HashSet为
dic[random]
他的值为
dic[random].value //不记得有没有这个字段了,反正出去HashSet,就有方法得到它的值

7. C#中如何让某个hashset的数据能够application变量那样一直在内存里边?

定义成静态全局变量
使用第三方内存缓存(例如memcache, redis等)

C#中如何让某个hashset的数据能够application变量那样一直在内存里边?

8. C#中List怎么转换成hashset

类似的问题被提了很多遍了,你可以从根子上这样看:
HashSet的构造方法之一是HashSet(IEnumerable collection),这说明哈希集可以在构造时通过传入一个有着*元素类型为T的可枚举的集合*完成初始化。

如1楼所示,List _dd其实本身就继承有IEnumerable接口,所以不要使用Linq的cast系列方法,你只需要一行:
HashSet _ss=new HashSet(_dd);大多数的集合类型都可以这样通过构造来初始化。
由于这种转换是结构上的转换而非值的转换,所以绝大多数情况下都需要new一下目标对象,指望List自己提供转换结构的方法是不靠谱的。

此外要说一句,你说的“地球人都知道”没有错,但是它还真的不慢哟。要知道,即使是使用上述构造方法,本质上来说CLR也是通过一个一个枚举_dd的元素并添加到_ss去的,两种方法在代码量上有差距,但是执行效率上几乎相等的。(因为编译时代码会自动优化的)

真的要使用大数据(如含有10万string的List),请勿使用上述两种方法(因为都慢),你需要学习Parallel系列的并行处理,可以理解为一种能够利用到所有CPU核心的多线程处理。