『壹』 怎样从java集合类set中取出数据

创建set的iterator方法:

Set<Object> set = new HashSet<Object>();

Iterator<Object> it = set.iterator();

while(it.hasNext())//判断是否有下一个

it.next()取出元素。

以上方法便是从Set集合中取出数据。

(1)hashsetjava扩展阅读:

Java中使用Set接口描述一个集合(集合不允许有“重复值”,注意重复的概念),集合Set是Collection的子接口,Set不允许其数据元素重复出现,也就是说在Set中每一个数据元素都是唯一的。Set接口定义的常用方法如下:

1、size() 获取Set尺寸(即Set包含数据元素的总数)。

2、 add(Object obj) 向Set中添加数据元素obj。

3、remove(Object obj) 从Set中移除数据元素obj。

4 、contains(Object obj) 判断当前Set中是否包含数据元素obj,如果包含返回true,否则返回false。

5、iterator() 将Set装入迭代器。

『贰』 Java集合HashSet中的两个对象怎样算重复

set 是会自动去重复的, 这个重复的意思是指 set 中的element 有相同的内存地址。
例如
User user1 = new User();
user.setName("abc");
User user2 = new User();
user.setName("abc");
这里的user1 与 user2 的内存地址是不同的(在堆各个有一块自己的地址),虽然二者都可以getName 拿到abc 但是并不 “==”
如果 User user3 = user1;
这个时候 user3 == user1 只是栈内的引用名称不相同 但都指向的是同一个内存地址。
所以 将 user1 与 user2 add到hashSet中后 set的size 会是2 如果是 user1 跟 user3 放进去 set会去重复 size 会是1

『叁』 C++中如何类似Java集合类中的LinkedHashSet类的功能

//微软的类库中好像已经有了一些vector set之类的数据结构。。。

//在网上搜了搜,你改改,他是用数组实现的,基本就是一个set

#include <iostream>
using namespace std;

const int Max=100;
//------------------------------------------------------
class Set
{
unsigned int len;
int Elem[Max];
public:
//Constructor
Set();
Set(const Set & SetObj);

inline bool isFull() const;
inline bool isEmpty() const;
inline unsigned int size() const;
inline int isMemberOf(int nElem) const;//返回位置

bool addElem(int nElem);
bool delElem(int nElem);

Set Union(const Set & SetB);
Set InSection(const Set & SetB);

void display() const;
void Input();
};
//------------------------------------------------------
Set::Set():len(0){}
//------------------------------------------------------
Set::Set(const Set & SetObj)
{
for (len = 0;len < SetObj.len;len++)
{
Elem[len] = SetObj.Elem[len];
}
}
//------------------------------------------------------
unsigned int Set::size() const
{
return len;
}
//------------------------------------------------------
bool Set::isEmpty() const
{
return len == 0;
}
//------------------------------------------------------
bool Set::isFull() const
{
return len == Max;
}
//------------------------------------------------------
int Set::isMemberOf(int nElem) const
{
for (int index = 0; index < len; index++)
{
if (Elem[index] == nElem) return index + 1;
}
return -1;
}
//-------------------------------------------------------
void Set::display() const
{
for (int index = 0; index < len;index++)
cout<<Elem[index]<<" ";
cout<<endl;
}
//-------------------------------------------------------
//添加和删除元素操作
//-------------------------------------------------------
bool Set::addElem(int nElem)
{
if (isFull()) return false;
else if (isMemberOf(nElem)!= -1){}//Do nothing
else
{
Elem[len++] = nElem;
}
return true;
}
//--------------------------------------------------------
bool Set::delElem(int nElem)
{
int loc = isMemberOf(nElem);
if (isEmpty()||(loc == -1)) return false;
for (int index = loc; index < len; index++)
{
Elem[index - 1] = Elem[index];
}
len--;
return true;
}
//--------------------------------------------------------
//求交集(InSection)与并集(Union)
//--------------------------------------------------------
Set Set::Union(const Set & SetB)
{
//注意:没有考虑溢出的情况
Set SetC(SetB);
for (int index = 0;index < len;index++)
SetC.addElem(Elem[index]);
return SetC;
}
//------------------------------------------------------------
Set Set::InSection(const Set & SetB)
{
Set SetC;
for (int index = 0;index < len;index++)
{
for (int indexB = 0;indexB < SetB.len;indexB++)
{
if (Elem[index] == SetB.Elem[indexB])
SetC.addElem(Elem[index]);
}
}
return SetC;
}
//--------------------------------------------------------------
void Set::Input()
{
int nSize;
cout<<"请输入集合的大小:\n";
cin>>nSize;
if (nSize > Max) return;
cout<<"请输入集合元素!\n";
for (int i = 0,elem; i < nSize ;i++)
{
cin>>elem;
addElem(elem);
}
}
//---------------------------------------------------------------

int main()
{
int n;
Set A,B,C;
cout<<"A";
A.Input();
cout<<"B";
B.Input();
cout<<"A=";
A.display();
cout<<"B=";
B.display();
cout<<"A∩B=";
C=A.InSection(B);
C.display();
cout<<"A∪B=";
C=A.Union(B);
C.display();
cout<<"从A中选择要删除的元素:";
cin>>n;
A.delElem(n);
cout<<"A=";
A.display();
cout<<"从B中选择要删除的元素:";
cin>>n;
B.delElem(n);
cout<<"B=";
B.display();
cout<<"输入要增加到集合A中的元素:";
cin>>n;
if (!A.addElem(n)) cout<<"增加失败,集合A已满!";
else
{
cout<<"A=";
A.display();
}
cout<<"输入要增加到集合B中的元素:";
cin>>n;
if (!B.addElem(n)) cout<<"增加失败,集合B已满!";
else
{
cout<<"B=";
B.display();
}
return 0;
}
//---------------------------------------------------------------

『肆』 Java HashSet排序问题

hashset是--不保证有序,不是 --保证无序。这个是一种巧合,Integer的hashCode()返回的是它本身,数据插入的时候,尽管进行了hash混淆,但是还是不行。

『伍』 java集合set有哪些方法

set是一个接口,一般实现类用HashSet

方法摘要

boolean add(E e)
如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。
boolean addAll(Collection<? extends E> c)
如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中(可选操作)。
void clear()
移除此 set 中的所有元素(可选操作)。
boolean contains(Object o)
如果 set 包含指定的元素,则返回 true。
boolean containsAll(Collection<?> c)
如果此 set 包含指定 collection 的所有元素,则返回 true。
boolean equals(Object o)
比较指定对象与此 set 的相等性。
int hashCode()
返回 set 的哈希码值。
boolean isEmpty()
如果 set 不包含元素,则返回 true。
Iterator<E> iterator()
返回在此 set 中的元素上进行迭代的迭代器。
boolean remove(Object o)
如果 set 中存在指定的元素,则将其移除(可选操作)。
boolean removeAll(Collection<?> c)
移除 set 中那些包含在指定 collection 中的元素(可选操作)。
boolean retainAll(Collection<?> c)
仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。
int size()
返回 set 中的元素数(其容量)。
Object[] toArray()
返回一个包含 set 中所有元素的数组。
<T>
T[] toArray(T[] a)
返回一个包含此 set
中所有元素的数组;返回数组的运行时类型是指定数组的类型。

『陆』 C#中如何类似Java集合类中的LinkedHashSet类的功能

受不了高分的诱惑。。。。所以动手写了一个
就按照楼上思路把代码做出来了。。
首先创建一个类Worker
代码如下
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
class Worker
{
public Worker(string name, int age)
{
this.name = name;
this.age = age;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
}
}
在Program.cs里这样写
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, Worker> workers = new Dictionary<string, Worker>();
try//防止有重复的输入
{
Worker worker1 = new Worker("测试1", 10);
Worker worker2 = new Worker("测试1", 10);//如果这样输入就会提示有重复键名相同
Worker worker3 = new Worker("测试3", 12);
workers.Add(worker1.Name, worker1);
workers.Add(worker2.Name, worker2);
workers.Add(worker3.Name, worker3);
foreach (Worker i in workers.Values)
{
Console.WriteLine(i.Name);
}
Console.ReadLine();
}
catch (Exception)
{

Console.WriteLine("输入有重复");
}
Console.ReadLine();

}
}
}

『柒』 在java中HashSet的底层数据结构是什么,有什么特点

HASHSET:底层是将你加入其中的对象进行HASH排列后在放的时候,对比你放入的对象在其中是否有相同的对象存在,如果存在就不放入,反之放入。

『捌』 java中HashSet集合中存入同一个对象,为什么不会自动调用equals方法

这是因为你没有重写SetClass的equals和hashCode方法.
没有重写的时候,对象比较调用的是Object的equals方法,此时你new的每个人都是回不同答对象,及时名字和长度都一样,也不认为是一个对象.
eclipse为例,可以在文件上右键,自动生成这两个方法,生成的时候选择你需要判断equals的属性即可

『玖』 java集合是什么

集合类是用来存放某类对象的。集合类有一个共同特点,就是它们只容纳对象(实际上是对象名,即指向地址的指针)。这一点和数组不同,数组可以容纳对象和简单数据。如果在集合类中既想使用简单数据类型,又想利用集合类的灵活性,就可以把简单数据类型数据变成该数据类型类的对象,然后放入集合中处理,但这样执行效率会降低。
集合类容纳的对象都是Object类的实例,一旦把一个对象置入集合类中,它的类信息将丢失,也就是说,集合类中容纳的都是指向Object类对象的指针。这样的设计是为了使集合类具有通用性,因为Object类是所有类的祖先,所以可以在这些集合中存放任何类而不受限制。当然这也带来了不便,这令使用集合成员之前必须对它重新造型。
集合类是Java数据结构的实现。在编写程序时,经常需要和各种数据打交道,为了处理这些数据而选用数据结构对于程序的运行效率是非常重要的。 [1]