Java类集-set

Set接口是Collection接口的子接口,Set接口中不能插入重复元素

Set接口的常用子类:

HashSet是set接口的一个子类,特点:里面不能存放重复元素,而且采用散列的存储方式,所以没有顺序。

Treeset也是set接口的一个子类,特点:里面不能存放重复元素,并且是有序存放

TreeSet是有序存放的,所以需要制定好排序规则,TreeSet中每个对象所在的类都必须实现Compatable接口才可以正常使用;

packageleiji;

publicclass Person implements Comparable<Person> {

private String name;

private int age;

public Person (String name,int age){

this.name=name;

this.age=age;

}

public String toString(){    //覆写toString方法

return"姓名:"+name+";年龄:"+age;

}

public int compareTo(Person per){  //覆写compareTo方法

if(this.age>per.age){

return 1;

}

else if(this.age<per.age){

return -1;

}

else{

return this.name.compareTo(per.name) ;

}

}

}

packageleiji;

publicclass Personal {

private String name;

private int age;

public Personal (String name,int age){

this.name=name;

this.age=age;

}

public String toString(){    //覆写toString方法

return"姓名:"+name+";年龄:"+age;

}

public boolean equals(Object obj){  //覆写equals方法

if(this==obj){          //判断是不是同一个对象

return true;

}

if (!(obj instanceofPersonal)){ //判断是不是同一个类

return false;

}

Personalp=(Personal)obj;       //进行向下转型

if(this.name.equals(p.name) && this.age==p.age){   //

return true;

}else{

return false;

}

}

public int hashCode(){      //覆写hashCode函数

returnthis.name.hashCode()*this.age;   //指定编码格式

}

}

packageleiji;

importjava.util.Set;

importjava.util.HashSet;

importjava.util.TreeSet;

publicclass Sett {

public static void main(String args[]){

Set<String> allset=new HashSet<String>();

allset.add("A");

allset.add("M");

allset.add("D");

allset.add("F");

allset.add("F");

System.out.println(allset);

Set<String> sortset=new TreeSet<String>();

sortset.add("F");

sortset.add("M");

sortset.add("A");

sortset.add("d");

System.out.println(sortset);

//运用自定义的类对象作为元素

Set<Person> alls=new TreeSet<Person>();

alls.add(new Person("张三",30));

alls.add(new Person("张三",32));

alls.add(new Person("张三",30));

alls.add(new Person("李四",30));

System.out.println(alls);

//运用自定义类Personal作为元素 实现HashSet去重功能

Set<Personal> allse=new HashSet<Personal>();

allse.add(new Personal("张三",30));

allse.add(new Personal("李四",30));

allse.add(new Personal("张三",30));

allse.add(new Personal("赵六",30));

allse.add(new Personal("徐峥",30));

System.out.println(allse);

}

}

//一个好的object类最好覆写Object类的HashCode()
equals() toString() 三个方法

时间: 2024-12-28 15:16:17

Java类集-set的相关文章

浅谈java类集框架和数据结构(2)

继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主要有最重要的三种实现:ArrayList,Vector,LinkedList,三种List均来自AbstracList的实现,而AbstracList直接实现了List接口,并拓展自AbstractCollection. 在三种实现中,ArrayList和Vector使用了数组实现,可以认为这两个是

Java类集(接口继承的关系)

类集的概念: 类集(Collection)就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充. 类集的特性: 这种框架是高性能的 框架必须允许不同类型的类集以相同的方式和高度互操作方式工作 类集必须是容易扩展和/或修改的 Java类集(接口继承的关系)

Java类集总结之一

1)类集:一个动态的对象数组,是对一些实现好的数据结构进行了包装. 2)在使用各个类集接口时,如果没有指定泛型,则肯定会出现警告信息, 此时,泛型将被擦除而全部使用Object接收. 3)类集框架本身不受对象数组长度的限制. 4)Collection接口 此接口使用了泛型,可以保证类集操作的安全性,避免发生ClassCastException. Collection接口是单值存放的最大父接口. 5)在开发中,很少直接使用Collectioin接口进行开发,基本上都是使用其子类接口. 子类接口主要

Java类集(List,Vector,map……) (1)

1.1在介绍类集框架之前,先来思考这样一个问题,如果现在要保存一组对象,按照初级的做法只能使用对象数组,但是使用对象数组操作本身有一个限制,就是数组有长度的限制:而通过一些数据结构的操作,如链表,则可以完成动态对象数组的操作,但是这些如果全部由开发人员来做,肯定非常麻烦. 类集框架恰好解决了以上问题,所谓的类集就是一个动态的对象数组,是对一些实现好的数据结构进行了包装,这样在使用时就会非常方便,而且最重要的是类集框架本身不受对象数组长度的限制. 类集框架被设计成拥有以下几个特性: 1.这种框架是

[零基础学JAVA]Java SE应用部分-35.JAVA类集之四

1.类集结构 (1)类集的产生目的 类集简单来讲就是一个动态的对象数组,此对象数组可以改变大小,可以任意的实现对象的增加.删除.输出.所有的类集存放java.util包中. (2)类集的划分 1.存放单值:Collection 2.存放一对值:Map 3.输出:Iterator (3)类集的具体概念 <1>Collection(只能存放一个值) |- 主要功能:用于输出使用 |- 子接口:List(允许有重复的元素,而且加入的顺序就是输出的顺序) |- 子类:ArrayList,是在Java

Java 类集初探

类集 类集:主要功能就是Java数据结构的实现(java.util) 类集就是动态对象数组(链表也是动态数组) Collection 接口* Collection是整个类集之中单值保存的最大 父接口 .即:每一次仅可以向集合中保存一个对象 public interface Collection<E> extends Iterable<E> 在Collection定义的常用操作方法 常用操作方法 向集合中保存数据 public boolean add(E e); 追加一个集合 pub

java类集框架

一.系统简述: 1.集合框架总体结构    Java中集合类定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类的区别是: java.util.Set接口及其子类,set提供的是一个无序的集合: java.util.List接口及其子类,List提供的是一个有序的集合: java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构: 另外,在JDK5中新增了Queue(队列)接口及其子类,提供了基于队列的集合体系.每种集合,都可以理解为用来在

Java类集总结之二

1)Map接口 关系:Map(接口) HashMap(非抽象子类).TreeMap(非抽象子类) 在开发中,Map集合的内容多用来查询,全部输出的操作较少:而Collection接口在开发中的主要作用就是用来传递内容及输出的. 2) 1 import java.util.HashMap; 2 import java.util.Map; 3 4 public class HashMapDemo01 { 5 6 public static void main(String[] args) { 7 M

Java类集框架之ArrayList源码剖析

ArrayList 基于数组实现,本质上是对象引用的一个变长数组,能够动态的增加或减小其大小. 不是线程安全的,只能用在单线程环境下.多线程环境下可以考虑用Collection.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的 CopyOnWriteArrayList类 下面直接贴ArrayList的Java实现,来源JDK1.8.0_25/src.zip. public class ArrayList<E>

JAVA笔记:Java 类集总结(二、Map接口及相关)

Map接口 与Collection接口不同的是,Map接口保存的对象是一对对,类似key-value这样的分布. Map接口的常用子类: 以HashMap为例使用Map: import java.util.HashMap ; import java.util.Map ; public class HashMapDemo01{ public static void main(String args[]){ Map<String,String> map = null; // 声明Map对象,其中k