2020.7.29集合框架和泛型

集合框架和泛型

1.Collection接口存储一组不唯一,无序的对象

(1)List接口存储一组不唯一,有序(插入顺序)的对象
1.

总结:
■ArrayList
长度可变的数组
遍历元素和随机访问元素
LinkedList
链表存储方式
插入、删除元素
public class NewsTitle {
private int id;
private String title;
private String author;
public NewsTitle(){}
public NewsTitle(int id, String title, String author) {
this.id = id;
this.title = title;
this.author = author;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}
}

public class NewsMgr {
public static void main(String[] args) {
NewsTitle title1 = new NewsTitle(1, “故宫”, “author”);
NewsTitle title2 = new NewsTitle(2, “长城”, “author”);
NewsTitle title3 = new NewsTitle(3, “北海”, “author”);
NewsTitle title4 = new NewsTitle(4, “颐和园”, “author”);
NewsTitle title5 = new NewsTitle(5, “天安门”, “author”);
ArrayList list = new ArrayList();
//创建集合对象,并且将新闻标题加入到集合中
list.add(title1);//等同于数组中的list[0]=title1;
list.add(title2);
list.add(title3);
list.add(title4);
list.add(title5);
//获取新闻标题的总数
//ArrayList的sizeL()方法等同于数组的length属性的作用
System.out.println(“新闻标题一共有”+list.size()+“条”);
//逐条打印新闻标题的名称
//方法一:遍历ArrayList元素的位置(下标)
for (int i = 0; i <list.size() ; i++) {
NewsTitle title=(NewsTitle)list.get(i);//list.get(i)等同于list[i],请注意,返回值是Object
System.out.println(title.getTitle());
}
//方法二:增强型for
for(Object obj:list){
NewsTitle title=(NewsTitle)obj;
System.out.println(title.getTitle());
}
}
}

2.ArrayList类的常用方法

add(Ovbject o)与add(index,Object o)的区别

boolean contains(Object o):判断是否存在指定元素,输出结果为布尔值

remove(Object o/index)可以删除索引下标,或者,具体的元素

注意:索引要从0开始

clear():清空数组元素
isEmpty():判断集合是否为空

改 set(index,xx)
2.LinkedList独有的方法:

是否可以用父类引用指向子类对象的形式?
可以的,不过只能调用父子类共用的方法,子类特有的无法使用;
List list =new ArrayList();
总结:
■LinkedList
是List接口的一个具体实现类
◆用于创建链表数据结构
插入或者删除元素时,它提供更好的性能
■独有方法 : addXXX()、getXXX()、 removeXXX()
◆LinkedList方法结合代码执行结果理解其作用
◆查阅帮助文档熟练对方法使用的掌握
LinkedList与ArrayList的总结:
■LinkedList与ArrayList-同 :
同为List实现类,元素有序、不唯- - -、长度可变;
共有Collection及List的通用方法
LinkedList与ArrayList-异 :
ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历
元素和随机访问元素的效率比较高
LinkedList采用链表存储方式,插入、删除元素时效率比较高

(2)Set接口存储一组唯一,无序的对象

HashSet是Set接口常用的实现类,Set中存放对象的引用:
采用对象的equals()方法比较两个对象是否相等
如下图:

运行的结果为2,因为s1,s2引用同一个对象;
Set接口如何判断加入对象是否已经存在呢?
答:采用对象的equals()方法比较两个对象是否相等
如何遍历HashSet?
答:1.使用增强型的for遍历,遍历结果与添加顺序不一致
,因为Set是无序的不唯一的
2.使用迭代器Iterator
获取Iterator : Collection接口的iterator()方法
Iterator的方法
➢boolean hasNext():判断是否存在另-个可访问的元素
➢Object next():返回要访问的下一个元素
总结:遍历集合的方法
有序集合:普通for遍历索引、增强型for、迭代器Iterator
无序集合:增强型for、迭代器Iterator

(3)Map接口存储一组键值对象,提供key到value的映射即,key=键,value=值
注意:(key)键唯一,但可以无序,相当于Set

Map接C门专门]处理键值映射数据的存储,可以根据键实现对值的
操作
◆最常用的实现类是HashMap
总结:
■Map接口专门处理键值映射数据的存储 ,可以根据键实现对值的
操作
put(key,value)
get(key)
size()
Map接口常用方法:

第一个方法:

第二个方法:

第三个方法:

第四个方法:

注意:此时,删除的是键值对
遍历Map
第一种方法:

第二种方法:

第三种方法:思路:获取Map中的所有键值对,然后在键值对中分别获取key和value

补充:当输出引用类型时,如输出创建的对象时,要重写toString,不然会输出地址
泛型
注意:泛型中只能加引用类型

        Collections类及其应用

Collections类定义了一系列用于操作集合的静态方法
■Collections和Collection不同 ,前者是集合的操作类,后者是集合接口
■Collections提供的常 用静态方法
sort():排序
◆binarySearch( ):查找
max()\min():查找最大\最小值
< > reverse():反转元素顺序

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页