Collection子接口(List/Set/Queue/SortedSet)

Collection主要的子接口:

  • List:可以存放重复内容
  • Set:不能存放重复内容,所有重复的内容靠hashCode()和equals()两个方法区分
  • Queue:队列接口
  • SortedSet:可以对集合中的数据进行排序

List接口:

总结了List接口的扩展方法,即包含有增删改查方法.

List接口常用的子类:

ArrayList:可以直接通过对象的多态性为List接口实例化.

Vector:算是元老级的类,使用差别不大

LinkedList:表示链表的操作类,同时实现List接口和Queue接口

Set接口:

Set接口常用的子类:

HashSet:不能存放重复元素,而且采用散列的存储方式,所以没有顺序

TreeSet:不能存放重复元素,但对输入的数据进行有序排列(实现了SortedSet接口)

指定排序:

class 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(){
		return "姓名:" + this.name + ";年龄:" + this.age ;
	}
	public int compareTo(Person per){
		if(this.age>per.age){
			return 1 ;
		}else if(this.age<per.age){
			return -1 ;
		}else{
			return this.name.compareTo(per.name) ;	// 调用String中的compareTo()方法
		}
	}
};
public class TreeSetDemo{
	public static void main(String args[]){
		Set<Person> allSet = new TreeSet<Person>() ;
		allSet.add(new Person("张三",30)) ;
		allSet.add(new Person("李四",31)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("赵六",33)) ;
		allSet.add(new Person("孙七",33)) ;
		System.out.println(allSet) ;
	}
};

运行结果:

[姓名:张三;年龄:30, 姓名:李四;年龄:31, 姓名:王五;年龄:32, 姓名:孙七;年龄:33, 姓名:赵六;年龄:33]

去重复元素:

class Person{
	private String name ;
	private int age ;
	public Person(String name,int age){
		this.name = name ;
		this.age = age ;
	}
	public boolean equals(Object obj){	// 覆写equals,完成对象比较
		if(this==obj){
			return true ;
		}
		if(!(obj instanceof Person)){
			return false ;
		}
		Person p = (Person)obj ;	// 向下转型
		if(this.name.equals(p.name)&&this.age==p.age){
			return true ;
		}else{
			return false ;
		}
	}
	public int hashCode(){
		return this.name.hashCode() * this.age	; // 定义一个公式
	}
	public String toString(){
		return "姓名:" + this.name + ";年龄:" + this.age ;
	}
};
public class RepeatDemo{
	public static void main(String args[]){
		Set<Person> allSet = new HashSet<Person>() ;
		allSet.add(new Person("张三",30)) ;
		allSet.add(new Person("李四",31)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("王五",32)) ;
		allSet.add(new Person("赵六",33)) ;
		allSet.add(new Person("孙七",33)) ;
		System.out.println(allSet) ;
	}
};

运行结果:

[姓名:李四;年龄:31, 姓名:张三;年龄:30, 姓名:孙七;年龄:33, 姓名:王五;年龄:32, 姓名:赵六;年龄:33]

Queue接口:

队列操作接口

SortedSet接口:

Collection子接口(List/Set/Queue/SortedSet)

时间: 2024-10-06 23:08:53

Collection子接口(List/Set/Queue/SortedSet)的相关文章

集合类:collection接口及其子接口(基础知识普及)

collection接口是集合接口树的根,定义了集合操作的通用API.作用是为了方便程序员处理一组常规元素. 注:Object[] toArray(Object[] a):返回一个内含集合所有元素的数组.实现了集合类和数组类之间的相互转换,一般如果指定数组长度不够的话,系统会自动生成一个新的数组用来存放这些元素,如果长度过大的话,多余的地方会被赋值为NULL.所以,如果不是操作者的话,不应该对这个函数返回的数组进行  .lenght运算,因为那样会得到不准确的数据. 另,这个函数返回的数组的运行

java集合_collection子接口 list的特有方法,ArrayList类体现

/* Collection |--List:元素是有序的,元素可以重复.因为该集合体系有索引. |--ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快.但是增删稍慢.线程不同步. |--LinkedList:底层使用的链表数据结构.特点:增删速度很快,查询稍慢.线程不同步. |--Vector:底层是数组数据结构.线程同步.被ArrayList替代了.因为效率低. |--Set:元素是无序,元素不可以重复.. List: 特有方法.凡是可以操作角标的方法都是该体系特有的方法

java子接口方法覆盖父接口方法的思考

接口List中继承接口Collection,接口Collection中存在size()方法,在接口List中又覆盖size()方法,意义何在?(覆盖了很多方法,见下图) public interface List<E> extends Collection<E> 1.父接口和子接口都是抽象方法(未实现),子类没有改变父类的该方法,在功能层面的确是没有意义的. 2. 子类方法不能缩小所覆盖方法的访问权限和,但是接口里面的方法只能是public,所以子接口方法覆盖父接口方法不能改变方法

H3C子接口配置要点及实例说明

 类型一:以太网子接口配置要点(单臂路由) 第一步:在路由器对端的交换机上配置好vlan信息(如vlan10/vlan20) 第二步:将交换机上与路由器直接相连的以太口配置成trunk口并同意全部vlan信息通过. 第三步:进入路由器以太口的子接口如ethernet0/0/0.10和ethernet0/0/0.20 第四步:配置好该子接口的ip地址,一般配置成相应vlan网关ip地址 第五步:为该子接口封装802.1q协议并指明该子接口相应vlan的vid 比如:[Huawei-Ethern

RHEL6子接口及双网卡绑定配置

RHEL6子接口及双网卡绑定配置 1.子接口配置 Linux就是一台路由器,只要开启路由转发功能.CISCO中,我们知道子接口的配置为fa0/0.1,那么在Linux中,子接口如何配置呢? 虚拟主机可以配置多大254个子接口,下面且看子接口的配置: 创建子接口配置文件 [[email protected] ~]# cd /etc/sysconfig/net netconsole       network          networking/      network-scripts/ [[

Request、Servlet及其子接口

最近看tomcat源码,这类接口多的有点眩,整理出来看一下.(基于tomcat4) javax.servlet.ServletRequset接口,和org.apache.catalina.Request接口,有什么联系? 其实就是对Request不同层面上的定义. 一.首先看下javax.servlet.Servlet接口 package javax.servlet; import java.io.IOException; public abstract interface Servlet {

8.Linux多网卡绑定、子接口

8.Linux多网卡绑定.子接口 ·mii-tool eth0,查看网卡速度.状态.物理连接, ·ethtool eth0,查看网卡物理特性,-i 查看网卡驱动信息,-S 查看网卡状态, ·IP别名:linux支持在一个物理网卡上配置多个ip地址,用来实现类似子接口之类的功能, ·centos/RHEL系统默认会启用NetworkManager对网卡管理,以方便用户使用(网络小图标), ·如果使用子接口需要禁用NetworkManager,service NetworkManager stop,

基于三层交换机和基于路由子接口的vlan间路由

1:通过三层交换机实现vlan间的通信:为三层交换机创建vlan,设置交换机的两个SVI,并配置IP地址. (在二层交换机上只能配置一个SVI端口,用来实现交换机交换机远程管理,在三层交换机上可以配置多个SVI端口) 配置sw: Switch(config)#inter fa0/1Switch(config-if)#switchport  mode  access Switch(config-if)#no shutSwitch(config)#vlan 2Switch(config-vlan)#

Juniper-SSG系列之子接口(单臂路由)配置终结篇

子接口到底是什么东东,咋回事?我这里就过多的解释,如果不懂单臂路由,请自行"补功课",这样才会更容易理解SSG系列当中配置细节和问题. 说下需求,在常见的企业组网当中,不少有一些"不专业"的网工和网管做一些简单粗暴的组网,比如交换机全部当纯二层傻瓜使用,所有的网关均在出口设备上,在以往的接触当中和客户的改网项目经验中,其中发现不少有这类情况,所以在这里,完完全全的需要本着一个专业的态度聊SSG的部署. 好了,不多废话,直接上菜. 如下图: 子网需求: 分多个业务网段