『壹』 怎樣從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]