java 怎么给set赋值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎么给set赋值相关的知识,希望对你有一定的参考价值。

先定义了setName和对象
private String name;
public String setName() //定义了set方法
this.name = name;

Student s1 = new Student; //实例化了对象
s1.setName("张三"); 我知道怎么预先设定值,但是不知道如何用控制台为对象的属性赋值
要怎么样才能运行程序后,由使用者为setName赋值?

通过remove和add方法,set集合中的对象属性为private final
Set接口

集合里的多个对象没有明显顺序。Set集合和Collection基本一样,没有

提供额外方法,只是和Collection行为不同

Set集合不允许包含相同的元素,如果add的是两个相同元素会返回false

Set不实用==运算符,根据equals方法

HashSet类

HashSet类是Set接口的典型实现,大多数时候使用Set集合都是用这个类实现

HashSet按Hash算法来存储集合中的元素

HashSet特点:

1.不能保证元素的排列顺序,顺序可能变化

2.HashSet不是同步的,多个线程同时访问一个Set集合,必须用代码

保证同步

3.集合元素值可以是null

当向HashSet集合中存入一个元素,HashSet会调用该对象的HashCode()

得到对象的hashCode,根据HashCode来决定对象在HashSet中的位置

如果两个元素equal方法比较返回true但是hashCode()方法返回值不同,

HashSet会把两个元素存储在不同位置

HashSet判断两个元素相同需要equal和hashCode都相同

因此重写类的equals方法和hashCode()方法要保证两个对象通过equals

返回true时hashCode也相等

Hash算法保证通过一个对象快速找到另一个对象。可以很快的执行,当需要

查找集合中的某个元素时,hash算法可以直接根据该元素的值找到该元素

从而让程序快速找到元素。

在数组中通过数组元素索引寻找元素,HashSet通过hashcode索引

重写hashCode()方法的基本步骤

当两个对象通过equals方法返回true时,两个对象的hashCode相等

对象中用作equals比较标准的属性,应该用来计算hashCode

向HashSet中添加可变对象时,如果修改HashSet集合中对象,有可能导致

该对象与集合中其他对象相等,从而导致HashSet无法正确访问对象

HashSet有一个子类 LinkedHashSet,LinkedHashSet集合也是根据HashCode来决定

元素的存储位置,同时使用链表维护元素次序,这样是的元素看起来是以

插入顺序保存,便利集合时会按插入顺序来访问。

Linked需要维护元素的插入顺序,性能略低于HashSet,但在迭代时性能更好

TreeSet是SortedSet接口的唯一实现

TreeSet可以确保元素处于排序状态。提供了几个额外方法:

1.Comparator
comparator():返回当前Set使用的Comparator,或者null,表示

自然的方式排序

2.Object first():返回集合中的第一个元素

3.Object last():返回集合中最后一个元素

4.Object lower(Object
e):返回集合中位于指定元素之前的元素

5.Object higher(Object
e):返回集合中位于制定元素之后的元素

6.SortedSet
subSet(fromElement,toElement):返回set的子集,范围从from到to

7.SortedSet headSet(toElement)返回set子集,小于toElement

8.SortedSet
tailSet(fromElement)返回set子集,由大于等于fromElement元素组成

TreeSet是根据元素值来进行排序而不是根据插入顺序

TreeSet采用红黑树的数据结构对元素排序 :支持自然排序(默认)和定制排序

自然排序:

TreeSet会调用集合元素的compareTo方法来比较元素之间的大小关系,

然后将集合元素按升序排列。

Java提供了一个Comparable接口,该接口定义了一个compareTo(Object obj)方法

该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象

可以比较大小。obj1.compareTo(obj2),如果方法返回0,表明两个对象相等。如果

返回正整数,表明obj1大于obj2;如果返回负整数,表明obj1小于obj2

如果要将对象添加如TreeSet该对象必须实现Comparable接口

当想TreeSet中添加对象时,会先将要添加的对象与TreeSet中的对象用compareTo比较

如果找不到compareTo则引发ClassCastException异常

因为只有同一个类型才能比较大小 所以TreeSet中添加的应该是同一个类型的对象

TreeSet和HashSet集合中的对象如果是可变对象,对象属性改变时,会导致集合处理

对象复杂化,易出错。所以应该尽量在集合中添加不可变对象

不可变对象是

1.属性为private final

2.含有带参数构造器,为对象初始化

3.属性有get方法没有set方法

定制排序:

TreeSet的自然排序是根据集合元素大小,TreeSet将它们以升序排列。使用定制

排序,如降序,使用Comparator接口的帮助。接口中包含一个int compare(T o1,T o2)

用于比较o1和o2的大小:重写该方法可以改变排序规则
参考技术A 定义一个Set的对象

1

Set set=new HashSet();//new 一个hashset

2、往set中添加字符串数据数据

1

set.add("内容");//往set里添加一个字符串"内容"

Set是最简单的一种集合,没有重复对象。Set接口主要实现了两个实现类:
HashSet : HashSet类按照哈希算法来存取集合中的对象,存取速度比较快
TreeSet : TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。
参考技术B 在Java中使用Set,可以方便地将需要的类型以集合类型保存在一个变量中.主要应用在显示列表.Set是一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。

Set set=new HashSet();
set.add("abc");
set.add("cde");
set.add("efg");
set.add("fgh");
set.add("abc"); //重复的abc,set会自动将其去掉
System.out.println("size="+ set.size() );
参考技术C

1、定义一个Set的对象

Set set=new HashSet();//new 一个hashset

2、往set中添加字符串数据数据

set.add("内容");//往set里添加一个字符串"内容"

Set是最简单的一种集合,没有重复对象。Set接口主要实现了两个实现类:

  HashSet : HashSet类按照哈希算法来存取集合中的对象,存取速度比较快

  TreeSet   : TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。

参考技术D Set本来就是无序的,所以替换直接删除要替换的元素,加入新元素就可以了,remove()和add()

以上是关于java 怎么给set赋值的主要内容,如果未能解决你的问题,请参考以下文章

Sql中如何给变量赋值

java如何在子类中赋值给父类的变量

vue $set 给数据赋值

JAVA从数据库查出来的数据放到实体类想用反射的方法给他们赋值,怎么做?

Java中怎么给数组批量赋值

java怎么给object赋值