
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
【广州达内培训】:在现在的很多的Java编程互联网中,有很多的IT行业都不断的在更新,很多的Java新技术也在不断的被开发出来;在不同的应用中,都会相应的存在着Java编程技术;
【达内培训】:对于Java技术中的set知识;我相信很多人还是陌生的,对于那些初学者也是一样的,相对处于陌生的状态,但是在Java技术开发这样的一个技术领域,你需要不断的去学习很多的Java技术方面的知识。 Java 中的Set和正好和数学上直观的集(set)的概念是相同的。
【达内培训】:Set最大的特性就是不允许在其中存放的元素是重复的。根据这个特点,我们就可以使用Set 这个接口来实现前面提到的关于商品种类的存储需求。Set 可以被用来过滤在其他集合中存放的元素,从而得到一个没有包含重复新的集合。下面一起和佛山达内Java培训的小编一起来看看给大家分享的知识和应用技巧;
1、 常用方法
按照定义,Set 接口继承 Collection 接口,而且它不允许集合中存在重复项。所有原始方法都是现成的,没有引入新方法。具体的 Set 实现类依赖添加的对象的 equals() 方法来检查等同性。
各个方法的作用描述:
public int size() :返回set中元素的数目,如果set包含的元素数大于Integer.MAX_VALUE,返回Integer.MAX_VALUE;
public boolean isEmpty() :如果set中不含元素,返回true ;
public boolean contains(Object o) :如果set包含指定元素,返回true ;
public Iterator iterator() : 返回set中元素的迭代器,元素返回没有特定的顺序,除非set提高该保证的某些类的实例 ;
public boolean add(Object o) :如果set中不存在指定元素,则向set加入 ;
public boolean remove(Object o) :如果set中存在指定元素,则从set中删除 ;
public boolean removeAll(Collection c) :如果set包含指定集合,则从set中删除指定集合的所有元素 ;
public void clear() :从set中删除所有元素。
2、实现类
实现了Set接口的主要有HashSet、TreeSet、LinkedHashSet这几个共同点就是每个相同的项只保存一份。他们也有不同点,区别如下:
HashSet类
Java.util.HashSet类实现了Java.util.Set接口。
· 它不允许出现重复元素;
· 不保证和政集合中元素的顺序
· 允许包含值为null的元素,但最多只能有一个null元素。
当向HashSet结合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置。
简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相等。
自然排序
自然排序使用要排序元素的CompareTo(Object obj)方法来比较元素之间大小关系,然后将元素按照升序排列。
Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现了该接口的对象就可以比较大小。
obj1.compareTo(obj2)方法如果返回0,则说明被比较的两个对象相等,如果返回一个正数,则表明obj1大于obj2,如果是 负数,则表明obj1小于obj2。
如果我们将两个对象的equals方法总是返回true,则这两个对象的compareTo方法返回应该返回0
定制排序
自然排序是根据集合元素的大小,以升序排列,如果要定制排序,应该使用Comparator接口,实现 int compare(T o1,T o2)方法。
import java.util.TreeSet;
import java.util.Iterator;
public class TestTreeSet
{
public static void main(String [] args)
{
TreeSet ts=new TreeSet();
ts.add("orange");
ts.add("apple");
ts.add("banana");
ts.add("grape");
Iterator it=ts.iterator();
while(it.hasNext())
{
String fruit=(String)it.next();
System.out.println(fruit);
}
}
}
LinkedHashSet
【广州IT培训】:LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序。这样使得元素看起 来像是以插入顺序保存的,也就是说,当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。
LinkedHashSet在迭代访问Set中的全部元素时,性能比HashSet好,但是插入时性能稍微逊色于HashSet。
import java.util.Iterator;
import java.util.LinkedHashSet;
public class LinkedHashSetIterator {
public static void main(String[] args) {
// Create a LinkedHashSet and populate it with elements
LinkedHashSet linkedHashSet = new LinkedHashSet();
linkedHashSet.add("element_1");
linkedHashSet.add("element_2");
linkedHashSet.add("element_3");
// To get the Iterator use the iterator() operation
Iterator it = linkedHashSet.iterator();
System.out.println("Elements in LinkedHashSet :");
while(it.hasNext())
System.out.println(it.next());
}}
【达内培训】:关于更多的Java技术方面的知识,是需要你去不断的学习和去接触的。如果你想成为一个Java技术大师,那么你是需要不断的更新自己的知识和拓展自己的思维知识,如果大家想了解到更多的Java技术,或者想学一门专业的Java技术,那么欢迎来佛山达内Java培训机构进行更多的了解和咨询。