​Java容器的继承关系​

news/2025/2/13 6:36:31/

Java容器的继承关系

Collection接口

 Collection接口中所定义的方法

int size();
boolean isEmpty();
void clear();
boolean contains(Object element);//是否包含某个对象
boolean add(Object element);
Iterator iterator();
boolean containsAll(Collection c);//是否包含另一个集合中的所有元素
boolean addAll(Collection c);
boolean removeAll(Collection c);
boolean retainAll(Collection c);求当前集合类和另一个集合类的交集
Object[] toArray();

复制

Collection 方法举例

import java.util.*;
public class Test{public static void main(String[] args){Collection c = new ArrayList();//可以放入不同类型的对象c.add("hello");c.add(new Integer(100));System.out.println(c.size());//2System.out.println(c);//[hello,100]}
}

复制

 这里提出一个我学习过程中问题:第四行代码,为什么不写成如下形式:

ArrayList c = new ArrayList();
//或者
List c = new ArrayList();

复制

 后来看了马士兵老师的视频以及网上找了一些博客解释才大概有个了解  首先,利用基类(父类)引用指向子类对象,该引用只能访问子类中父类的属性和方法,不能访问子类中新的属性和方法,当然这里不是父类,而是接口,效果也是一样的。这样做相当于给使用者固定一个模板,只能使用Collection中的一些方法,而且本身程序也只用到Collection中的方法,更加简洁  其次,使用Collection接口的引用更加具有扩展性,比方说下次要将c指向LinkedList对象,就可以直接改,但如果是上述两种方式,就不方便进行转换

Set接口

 Set接口中所定义的方法

boolean add(Object o)//如果不存在指定的元素,则添加此元素
boolean contains(Object o)//如果包含指定的元素,则返回true
boolean retainAll(Collection c)//保留包含collection中的元素
boolean addAll(Collection c)//将Collection中的元素添加到Set中(不包括重复的)

复制

Set方法举例

public static void main(String[] args){Set s = new HashSet();s.add("hello");s.add("world");s.add(new Inetger(100));s.add("hello");//相同的元素不会被添加System.out.println(s);//
}

复制

pulic static void main(String[] args){Set s1 = new HashSet();Set s2 = new HashSet();s1.add("a");s1.add("b");s1.add("c");s2.add("d");s2.add("a");s2.add("b");Set sn = new HashSet(s1);//把s1的内容copy到snSet su = new HashSet(s1);sn.retainAll(s2);//两个集合的交集su.addAll(s2);System.out.println(sn);System.out.println(su);
}

复制

List接口

 List接口中所定义的方法

Object get(int index)//返回指定下标位置的元素
Object set(int index,Object element)//用指定的元素替换指定位置的元素,返回被替换的元素
void add(int index,Object element)//在指定位置添加元素,后面的元素依次向后移
Object remove(int index)//去除指定位置的元素
int indexOf(Object o)//返回元素第一次出现在List中的下标
int LastIndexOf(Object o)//返回元素最后一次出现在List中的下标

复制

List方法举例

public static void main(String[] args){List l1 = new LinkedList();for(int i = 0;i <= 5;i++)l1.add("a" + i);System.out.println(l1);//[a0,a1,a2,a3,a4,a5]l1.add(3,"a100");System.out.println(l1);//[a0,a1,a2,a100,a3,a4,a5]l1.set(6,"a200");System.out.println(l1);//[a0,a1,a2,a100,a3,a4,a200]System.out.print((String)l1.get(2) + " ");//a2System.out.println(l1.indexOf("a3"));//4l1.remove(1);System.out.println(l1);//[a0,a2,a100,a3,a4,a200]

复制

 上面程序注意一点是,get方法返回值是Object类型,所以要强制转换为String类型

Collections类

 类java.util.Collections提供了一些静态方法实现了基于List容器的一些常用算法

void sort(List)//对List容器内的元素排序
void shuffle(List)//对List容器内的元素随机排列
void reverse(List)//将List容器内的元素逆序
void fill(List,Object)//用一个特定的对象重新填充List
void copy(List dest,List src)//将src的内容拷贝到dest
int binarySearch(List,Object)//二分查找特定对象

复制

Collections方法举例

public static void main(String[] args){List l1 = new LinkedList();List l2 = new LinkedList();for(int i = 0;i <= 9;i++)l1.add("a" + i);System.out.println("l1");Collections.shuffle(l1);//随机排序System.out.println(l1);Collections.reverse(l1);//逆序System.out.println(l1);Collections.sort(l1);//排序System.out.println(l1);System.out.println(Collections.binarySearch(l1,"a5"));//折半查找
}

复制

Comparable接口

 Comparable中只有一个方法:

public int compareTo(Object obj);
//返回  0 表示this == obj
//返回正数表示this > obj
//返回负数表示this < obj

复制

 实现Comparable接口的类通过实现compareTo方法,从而确定该类对象的排序方式

Comparable方法举例

import java.util.*;class Person implements Comparable{//必须实现接口String firstName,lastName;Person(String firstName,String lastName){this.firstName = firstName;this.lastName = lastName;}public String getFirstName() {return firstName;}public String getLastName() {return lastName;}public String toString() {return firstName + "" + lastName;}public boolean equals(Object o) {if(o instanceof Person) {Person p = (Person)o;    return p.firstName == this.firstName && p.lastName == this.lastName;}returnsuper.equals(o);}public int hashCode() {return firstName.hashCode();}public int compareTo(Object o) {//实现compareTo方法Person p = (Person)o;int perCmp = this.firstName.compareTo(p.firstName);//调用String类的compareTo方法return (perCmp == 0 ? this.lastName.compareTo(p.lastName) : perCmp);//如果姓相同,比较名}
}public class Test{public static void main(String[] args) {List l1 = new LinkedList();l1.add(new Person("W","M"));l1.add(new Person("X","Z"));l1.add(new Person("Z","S"));l1.add(new Person("W","L"));System.out.println(l1);Collections.sort(l1);System.out.println(l1);}
}

复制

Map接口

  1. Map接口的实现类用来存储键&值对
  2. Map接口的实现类有HashMap和TreeMap等
  3. Map类中存储的键&值对通过键来标识,所以键值不能重复
Object put(Object Key,OBject Value)//如果原本的key存在,
//那么就会把原本的value作为返回值返回,并且把当前的参数传进去
Object get(Object Key)
Object remove(Object Key)
boolean containsKey(Object Key)
boolean containsValue(Object Value)
int size()
boolean isEmpty()
void putAll(Map t)
void clear()

复制

Map方法举例

import java.util.*;
public class Test{public static void main(String[] args){Map m1 = new HashMap();Map m2 = new HashMap();m1.put("one",new Integer(1));m1.put("two",new Integer(2));m1.put("three",new Integer(3));m2.put("A",new Integer(1));m2.put("B",new Integer(2));System.out.println(m1.size());System.out.println(m1.containsKey("one"));System.out.println(m2.containsValue(new Integer(1)));if(m1.containsKey("two")){int i = ((Integer)m1.get("two")).intValue();System.out.pritnln(i);}Map m3 = new HashMap(m1);m3.putAll(m2);System.out.println(m3);}
}

复制

import java.util.*;
//记录每个单词出现多少次
public class Test{private static final Integer ONE = new Integer(1);public static void main(String[] args) {Map m = new HashMap();for(int i = 0;i < args.length;i++) {Integer freq = (Integer)m.get(args[i]);m.put(args[i],(freq == null ? ONE : new Integer(freq.intValue()) + 1));}System.out.println(m.size() + "distinct words detected:");System.out.println(m);}
}

 

复制

 


http://www.ppmy.cn/news/384303.html

相关文章

强化学习:蒙特卡洛方法(MC)

引入蒙特卡洛方法例子 以抛硬币为例&#xff0c;将结果(正面朝上或反面朝上)表示为作为随机变量 X X X &#xff0c;如果正面朝上则 X 1 X1 X1 &#xff0c;如果反面朝上&#xff0c;则 X − 1 X-1 X−1&#xff0c;现在要计算 E [ X ] E[X] E[X]。    我们通常很容易…

百度 flash html5自切换 多文件异步上传控件webuploader基本用法

双核浏览器下在chrome内核中使用uploadify总有302问题&#xff0c;也不知道如何修复&#xff0c;之所以喜欢360浏览器是因为帮客户控制渲染内核&#xff1a; 若页面需默认用极速核&#xff0c;增加标签&#xff1a;<meta name"renderer" content"webkit&quo…

PDF文档用什么软件打开?

PDF文档&#xff0c;在办公领域使用很广&#xff0c;那么&#xff0c;什么软件可以打开PDF文档呢&#xff1f;能打开PDF文档的软件统称为PDF阅读器&#xff0c;但是不同的PDF阅读器&#xff0c;功能相差还是很大的。如何主要用于编辑pdf&#xff0c;那就用adobe pdf或者金山pdf…

用IE浏览器打开pdf文件出来的是空白页面,怎么办?

启动Acrobat Reader并执行“文件”菜单“首选项”子菜单中的“一般”命令&#xff0c;打开“一般首选项”对话框&#xff0c;然后复选其中的“网络浏览器集成”选项(最好一并复选该选项卡中的“允许后台下载”选项&#xff0c;以便加快浏览速度)&#xff0c;最后重新启动IE及Ac…

怎样让 pdf 文件直接下载而非在浏览器里打开

问题&#xff1a;点击 <a href"18禁.pdf">下载</a> 的时候&#xff0c;Chrome 会自动调用内置的 pdf 阅读器打开&#xff0c;我只想让用户下载这个文件&#xff0c;有什么办法呢&#xff1f; 答案&#xff1a;<a href"18禁.pdf" download&g…

用VBA打开PDF文件

Shell "RUNDLL32.EXE URL.DLL,FileProtocolHandler " & myfile, vbMaximizedFocus myfile是PDF文件完整路径

如何打开PDF文档?必看的5种方法

经常接触各种电子文档的人对于PDF肯定特别熟悉&#xff0c;但对于另一部分日常更多使用office的人来说&#xff0c;PDF格式相对陌生&#xff0c;那么如何才能打开PDF文件查看呢&#xff1f; 打开PDF文档的工具一般包含PDF阅读器和编辑器&#xff0c;如果我们打开PDF仅是为了查…

用电脑怎么打开pdf文件阅读

有的pdf文件不能打开阅读怎么办&#xff1f;阅读效果差想让阅读效果更好一些怎么办&#xff1f;其实这些问题用pdf阅读器就可以解决啦。 轻快pdf阅读器是一个非常便捷的pdf阅读器&#xff0c;它具有个性化的阅读模式&#xff0c;支持单页以及书本浏览&#xff0c;还有提供精准搜…