当前位置:首页 » 编程语言 » java的set集合

java的set集合

发布时间: 2022-11-19 14:07:51

1. java set集合不可重复的意思

set 的equals是内容相等.
如果没有重写过的equals就是HashCode值相等,可以理解为地址.
重写过的,就要看对应的equals方法的说明了,根据实际用途来做,一般都是跟内容有关

2. java中Set集合可以允许有多个空值吗

不可以 ,api上set定义:

一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对

e1 和 e2,并且最多包含一个 null 元素。

3. 在java中,set集合和list集合有什么相同点和不同点

在网上看到一点,可能对你有所帮助
Set(集合):
Set是最简单的一种集合。集合中的对象不按特定的方式排序,并且没有重复对象。
Set接口主要实现了两个实现类:
HashSet:HashSet类按照哈希演算法来存取集合中的对象,存取速度比较快
TreeSet:TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
Set的用法:
存放的是对象的引用,没有重复对象
Setset=newHashSet();
Strings1=newString("hello");
Strings2=s1;
Strings3=newString("world");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());//打印集合中对象的数目为2。
Set的add()方法是如何判断对象是否已经存放在集合中?
booleanisExists=false;
Iteratoriterator=set.iterator();
while(it.hasNext()){
StringoldStr=it.next();
if(newStr.equals(oldStr)){
isExists=true;
}
}
List(列表):
List的特征是其元素以线性方式存储,集合中可以存放重复对象。
List接口主要实现类包括:
ArrayList():代表长度可以改变得数组。可以对元素进行随机的访问,向ArrayList()中插入与
与删除元素的速度慢。
LinkedList():在实现中采用链表数据结构。插入和删除速度快,访问速度慢。
对于List的随机访问来说,就是只随机来检索位于特定位置的元素。
List的get(intindex)方法放回集合中由参数index指定的索引位置的对象,下标从“0”开始。
最基本的两种检索集合中的所有对象的方法:1:用for循环和get()方法:
for(inti=0;i<LIST.SIZE();I++){<P>
System.out.println(list.get(i));
}
2:使用迭代器(Iterator):
Iteratorit=list.iterator();
while(it.hashNext){
System.out.println(it.next);
}

4. 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 进行排序。

5. Java中Set集合怎样用for遍历

set是要用迭代器访问。迭代器好比一个指向元素之间的指针,每移动一次,就指向下一个元素。
迭代器英文叫做Iterator。set有iterator方法,传给迭代器对象进行迭代。
示例如下:
package cn.util;

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

public class SetDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Set set=new HashSet();
List list=new LinkedList();
list.add("1");
list.add("2");
set.add(list);
list=new LinkedList();
list.add("1");
list.add("2");
set.add(list);
set.add("a");
set.add("b");
set.add("a");
Iterator it= set.iterator();
while(it.hasNext())
{
Object ob=it.next();
if(ob instanceof List)
{
System.out.println(ob+" "+"true");
}
else{
System.out.println(ob+" "+"false");
}

}
System.out.println(set.size());

}

}

6. java 集合set类中是如何实现数据不能重复的

Set 有个 add 方法是将元素添加到 Set 中,以 HashSet 为例。

publicbooleanadd(Ee){
returnmap.put(e,PRESENT)==null;
}

可以看到,HashSet 底层的数据结构是一个HashMap<E,Object> ,将 e 作为 HashMap 的 key 保存的。而 HashMap 的底层数据结构是 HashTable ,根据 HashMap 的 key 的HashCode 去 HashTable (具体实现是数组+链表) 里找到元素的位置。如果同一个对象(使用equals 来比较两个对象是否相同,具体是比较对象的 hashCode() 是否相同) 往Set 里放,最终放到 HashTable 的位置是相同的。具体判断Set 是否包含某个对象,调用的是Set的contains(Object o) 方法,它内部也是通过计算 o 的hashCode 去查找该元素是否存在的。

如果题主是新学习Java的同学,建议重点学习一下常用集合的数据结构,对于掌握Java这门语言非常有帮助。

7. 怎样从java集合类set中取出数据

创建set的iterator方法:

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

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

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

it.next()取出元素。

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

(7)java的set集合扩展阅读:

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装入迭代器。

8. 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
中所有元素的数组;返回数组的运行时类型是指定数组的类型。

9. JAVA里面set,map,list的区别是什么(尽量详细)

java集合的主要分为三种类型:

  • Set(集)

  • List(列表)

  • Map(映射)

  • 要深入理解集合首先要了解下我们熟悉的数组:

    数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。

    简单说下集合和数组的区别:(参考文章:《Thinking In Algorithm》03.数据结构之数组)

Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。

1、
效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。

2、Java中有一个Arrays类,专门用来操作array。
arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.array():array的复制。

若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。所以就要用到集合。

那我们开始讨论java中的集合。

集合分类:

Collection:List、Set
Map:HashMap、HashTable

热点内容
应缴费档次配置异常怎么回事 发布:2025-01-15 13:20:34 浏览:617
成都php招聘 发布:2025-01-15 13:12:16 浏览:380
怎么调用服务器数据库 发布:2025-01-15 13:06:25 浏览:656
人人网设置访问权限 发布:2025-01-15 13:02:06 浏览:563
崩坏学园2脚本 发布:2025-01-15 12:58:43 浏览:459
我的世界服务器等级如何升 发布:2025-01-15 12:45:55 浏览:689
c语言程序填空题 发布:2025-01-15 12:45:53 浏览:545
怎么配置氯化钠浓度 发布:2025-01-15 12:34:06 浏览:206
4000除以125简便算法 发布:2025-01-15 12:27:41 浏览:464
源码商用 发布:2025-01-15 12:26:54 浏览:75