A. java中怎麼往集合類set里添加數據
兩種向Set中添加元素的方法,第一種是使用add()方法,每次添加一個元素到set中,當集合中不存在相同元素時將添加到集合中,並返回true,當集合中存在元素時,返回false。代碼如下:
Set<String> sets = new HashSet<>();
sets.add("String");
System.out.println(sets.add("Tree"));
System.out.println(sets.add("String"));
List<String> lists = new LinkedList<>();
lists.add("test");
lists.add("test");
lists.add("one");
System.out.println(sets.addAll(lists));
還有一個是向集合中批量添加元素的方法addAll(),這個方法的入參是Colletion。上述代碼執行結果如下:
擴展知識
Set集合可以知道某物是否已近存在於集合中,不會存儲重復的元素,注重獨一無二的性質,用於存儲無序(存入和取出的順序不一定相同)元素,值不能重復。可以很好地作為排重時使用的數據結構,但要注意集合內部數據一般情況沒有順序。常用的set有HashSet和TreeSet。
TreeSet是JAVA中集合的一種,TreeSet 是一個有序的集合,它的作用是提供有序的Set集合。它繼承於AbstractSet抽象類,實現了NavigableSet<E>,Cloneable,java.io.Serializable介面。一種基於TreeMap的NavigableSet實現,支持2種排序方式:自然排序或者根據創建TreeSet 時提供的 Comparator 進行排序。
B. java中從hashset中取元素
package test;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Func{
//我假定是String類型的
public static Set<String> set = new HashSet<String>();
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);
}
}
}
C. 怎樣從java集合類set中取出數據
用循環或者迭代器
創建set的iterator
Set<Object> set = new HashSet<Object>();
Iterator<Object> it = set.iterator();
while(it.hasNext())//判斷是否有下一個
it.next()取出元素
======================================
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
class ADD{
public String a;
public static void main(String[] args) {
ADD a = new ADD();
a.a = "a";
ADD b = new ADD();
b.a = "b";
Set<ADD> set = new HashSet<ADD>();
set.add(a);
set.add(b);
Iterator<ADD> it = set.iterator();
while(it.hasNext()){
System.out.println(((ADD)it.next()).a);
}
}
}
D. 怎樣從java集合類set中取出數據
一般是通過迭代期獲取數據,因為set集合無序,所以輸出不是順序輸出
importjava.util.HashSet;
importjava.util.Iterator;
importjava.util.Set;
publicclassTest{
publicstaticvoidmain(String[]args){
//初始化set集合
Set<String>set=newHashSet<>();
set.add("1");
set.add("2");
set.add("3");
//獲取set集合數據
for(Iteratoriterator=set.iterator();iterator.hasNext();){
Stringstring=(String)iterator.next();
System.out.println(string);
}
}
}
E. java set有get方法嗎
你想問的應該是:java.util.Set 有沒有像 list 一樣的get方法吧?
答案是沒有;
List特點:元素有放入順序,元素可重復
Set特點:元素無放入順序,元素不可重復
List的get方法需要下標,其實也就是放入順序,由於Set沒有放入順序,所以這應該就是沒有給Set設計get方法的原因吧
(擴展:在Set中的位置是由元素的HashCode決定的,位置其實是固定的)
要取Set的值,一般是用iterator() 方法獲取迭代器進行操作,也可以用toArray()方法轉成數組來操作。
F. 為什麼Set及子類中沒有提供隨機取元素的方法
1.可以用Set的一下兩個方法獲取可以隨機訪問的數組:
引用
Object[] toArray()
返回一個包含 set 中所有元素的數組。
<T> T[]
toArray(T[] a)
返回一個包含 set 中所有元素的數組;返回數組的運行時類型是指定數組的類型。
2.可以繼承HashSet,使用復合數據結構:
Java代碼 收藏代碼
import java.util.ArrayList;
import java.util.HashSet;
public class ArraySet<E> extends HashSet<E> {
private static final long serialVersionUID = -7548294595221509577L;
private ArrayList<E> list = new ArrayList<E>();
/**
* @param index
* @return
* @see java.util.ArrayList#get(int)
*/
public E get(int index) {
return list.get(index);
}
@Override
public boolean add(E o) {
if (super.add(o)) {
list.add(o);
return true;
} else
return false;
}
@Override
public boolean remove(Object o) {
if (super.remove(o)) {
list.remove(o);
return true;
} else
return false;
}
@Override
public void clear() {
super.clear();
list.clear();
}
}
G. java裡面的集合框架的set用法應該怎麼做
1、Set:它是無序、不重復、該介面中的方法和Collection介面中的方法一致。
繼承它的子類有HashSet和TreeSet。
HashSet:底層是哈希表數據結構,不同步的它保證元素的唯一性的方式。
根據元素的兩個方法來完成的,一個是HashCode、一個是equals方法,只有當hashCode方法算出哈希值相同時,會再次判斷兩個元素的equals方法是否為true,如果是true說明兩個元素相同,不存儲,所以往hashSet集合中存儲自定義對象時,要覆蓋hashCode,equals方法,通過自定義對象具備的特有數據定義hashCode、equals的具體實現。
treeSet:用於給集合中的額元素按照指定的順序進行排序,底層是二叉樹結構,線程是不同步的。
它保證元素的唯一性,就是通過元素對象的比較方法返回值來確定的,如果為0,則視為兩個元素時相同的元素,不存儲。
treeset的兩種排序方式:
1、讓元素自身具備比較功能,就是強制讓元素類去實現comparable介面,覆蓋compareTo方法,這時元素具備的自然排序,可是如果元素自身不具備比較功能,獲取具備的比較功能不是所需要的,這時排序方式就不能用了。
2、讓集合自身具備比較功能,需要定義比較器,其實就實現了comparetor介面的子類對象作為參數傳遞給treeSet集合的構造函數,讓treeSet集合一創建就具備了比較功能,該子類必須要覆蓋compare方法。