Java set的区别_java中set和list的区别

展开全部

Collection 的子接口 Set,List

一: Set 不允许重复,List允许重复

二: Set 无序,List有序 .

这里的无序和有序, 是说的添加顺序和元素顺序的一致62616964757a686964616fe4b893e5b19e31333363393066性.

比如添加时是obj1,obj2,obj3 ,那么list存储他们的顺序就是obj1,obj2,obj3

而set集合的存储顺序就不一定了,可能是obj2,obj1,obj3

Set和List的参考代码import java.util.ArrayList;

import java.util.HashSet;

import java.util.TreeSet;

class Student implements Comparable{//实现Comparable接口

int number;//学号

String name;//姓名

//重写toString方法

public String toString() {

//return "{number:"+number+",name:"+name+"}";

return name;//为简单明了,只返回姓名

}

//无参数构造器

public Student() {

}

//有参数构造器

public Student(int number,String name) {

this.number=number;

this.name = name;

}

//重写equals方法

@Override

public boolean equals(Object obj) {

if(obj==null||obj instanceof Student) {

return false;

}

Student s = (Student) obj;

return s.number==this.number;//如果学号一样. 就认为是同一个学生

}

@Override

public int compareTo(Student o) {

return this.number-o.number;//根据学号排序

}

}

public class Test{

public static void main(String[] args) {

Student st1 = new Student(2,"Paul");

Student st2 = new Student(3,"Jack");

Student st3 = new Student(1,"Lucy");

ArrayList list = new ArrayList();

list.add(st1);

list.add(st2);

list.add(st3);

System.out.println(list);//[Paul, Jack, Lucy] 和添加顺序一致

HashSet set = new HashSet();

set.add(st1);

set.add(st2);

set.add(st3);

System.out.println(set);//[Paul, Lucy, Jack]//和添加顺序不一致

TreeSet set2 = new TreeSet();//Student实现了Comparable接口的compareTo方法, 可以保证顺序安装指定的顺序排列

set2.add(st1);

set2.add(st2);

set2.add(st3);

System.out.println(set2);//[Lucy, Paul, Jack] 和学号的大小排列一致

}

}

输出[Paul, Jack, Lucy]

[Paul, Lucy, Jack]

[Lucy, Paul, Jack]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值