java-Collection(List、Set)

xiaoxiao2021-02-28  118

import java.util.ArrayList; import java.util.Collection; /** *Java2的集合框架,抽其核心,主要有三种:List、Set和Map。如下图所示: *需要注意的是,这里的 Collection、List、Set和Map都是接口(Interface),不是具体的类实现。 * List lst = new ArrayList(); 这是我们平常经常使用的创建一个新的List的语句,在这里, List是接口,ArrayList才是具体的类。 * * 在实际开发中,需要将使用的对象存储于特定数据结构的容器中。JDK提供了这样的容器--集合(Collection) * Collection是一个接口,定义了集合相关的操作方法,其中有两个子接口:List与Set * List:可重复集,且有序 Set:不可重复集,大部分实现类是无序的 元素是否可重复,取决于元素的equals()比较的结果 * *集合存放的是元素的引用(地址) *集合中存储的都是引用类型元素,并且集合只保存每个元素对象的引用,而非将元素对象本身存入集合 */ public class CollectionDemo { public static void main(String[] args) { /** * Collection定义了一个add方法用于向集合中添加新元素 * boolean add(E e) * 该方法会将给定的元素添加集合,若添加成功则返回true,否则返回false */ Collection c=new ArrayList(); c.add("12"); c.add("46"); c.add("45.5"); System.out.println(c);//[12,46,45.5] /** * int size() * 该方法用于返回当前集合中的元素总数 */ System.out.println("size:"+c.size());//3 /** * void clear() * 该方法用于清空当前集合 */ c.clear(); System.out.println(c);//[] /** * boolean isEmpty() * 该方法用于判断当前集合中是否不包含任何元素 */ System.out.println("集合是否不包含任何元素:"+c.isEmpty());//true /** * boolean contains(Object o) * 该方法会用于判断给定的元素是否被包含在集合中。包含返回true,不包含返回false * 集合在判断元素是否被包含在集合中是根据每个元素的equals()方法进行比较后的结果。 * 通常有必要重写equals()保证contains()方法的合理结果 */ Collection points=new ArrayList(); points.add(new Point(1,3)); points.add(new Point(2,3)); points.add(new Point(3,3)); System.out.println(points); Point p=new Point(1,3); //如果Point不重写equals方法将为false,因为会调用Object中的equals方法,而其中的方法采用的是==,比较的是地址值 System.out.println("集合是否包含P元素:"+points.contains(p)); } } class Point { private int x,y; public Point(int x, int y) {//构造 super(); this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public String toString() {//重写Object父类方法---返回Point对象的关键性数据 return "("+x+","+y+")"; } public boolean equals(Object obj) {//重写Object父类方法 //方法执行期间this是当前对象引用 //obj 是另一个对象的引用 //比较关键数据:就是比较this(x,y)和obj(x,y)是否相等 if(obj==null) {//对象为空 return false; } if(this==obj) {//对象自己和自己比较 return true;//不用执行下面的语句,性能好 } if(obj instanceof Point) { Point other=(Point)obj;//强制类型转换 return this.x==other.x&&this.y==other.y; } return false; } }
转载请注明原文地址: https://www.6miu.com/read-22419.html

最新回复(0)