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方法。