一、集合简介
Java 集合可分为 Collection 和 Map 两种体系
1、Collection接口
1、在java.util包中,该接口存储的是一组不唯一,无序的对象。
2、List接口:存储的是一组不唯一,有序(插入顺序)的对象。
2.1、ArrayList:存储数据是有序、可重复的,查询快增删慢。
2.2、add(Object o):增加对象
2.3、add(数字,名称):在指定的下表位置添加对象。例:add(1,ouou):表示在下标为1的位置添加ouou对象。
2.4、get(i):根据下标获取对象(get是Object类型,使用时根据实际情况进行强转即可)
2.5、size():获取集合中的长度
2.6、contains(yaya):查看是否包含这个yaya对象,返回值是boolean类型。
2.7、Linkist:存储数据是无序的、不可重复的,查询慢增删快。
2.8、Vector:古老的实现类,线程是安全的,效率是低下的。
3、Set:元素无序、不可重复的集合。
3.1、特点:无序,唯一
3.2、HashSet:Set set = new HashSet();
3.3、TreeSet
2、Map接口
1、双列数据,保存具有映射关系“key-value对”的集合。
2、Map<Key,Value>(Key要是唯一的)
3、HashMap:
Map map = new HashMap(); //定义一个Map接口类型的变量,引用一个实现类
map.put(“CN”,”中国”); //添加。CN是Key,中国是Value
System.out.println(map.containKey(“CN”));
System.out.println(map.cotainValue(“日本”));
System.out.println(map.values());
System.out.println(map.remove(“日本”));
3、使用集合框架的好处
可以理解成是一个动态的数组。
二、练习
1、题目:
封装一个新闻类,包含标题、作者、新闻内容和发布时间,新闻标题如下:
新闻一:中国多地遭雾霾笼罩空气质量再成热议话题
新闻二:民进党台北举行“火大游行”
新闻三:春节临近北京“卖房热”
新闻四:春节临近北京“卖房热”
完成如下要求(共50分,每小题10分):
1)完成对新闻类的设计,要求在初始化新闻类对象时 ,通过构造传参的形式对新闻标题赋值,并要求实例化四个对象,标题内容如题。
2)要求打印新闻对象时,直接打印新闻标题;
3)要求使用equals方法比较新闻时,只要标题相同,就认为是同一新闻,请输出新闻一与新闻二的比较结果,新闻三与新闻四的比较结果。
4)将新闻对象存入HashSet集合中,并且遍历集合,打印新闻类对象;
5)打印集合中新闻数量。
2、代码
1、先创建一个新闻类,即News类
public class News {
private String title; //标题
private String author; //作者
private String content; //内容
private int time; //发布时间
//仅含标题参数的构造函数
public News1(String title) {
this.title = title;
}
//set/get方法
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 String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
@Override
public String toString() {
return "title='" + title + '\'' +
", author='" + author + '\'' +
", content='" + content + '\'' +
", time=" + time;
}
}
2、在创建一个测试类,即TestNews类
import java.util.HashSet;
public class TestNews {
public static void main(String[] args) {
//实例化四个对象
News news1 = new News("中国多地遭雾霾笼罩空气质量再成热议话题");
News news2 = new News("民进党台北举行“火大游行”");
News news3 = new News("春节临近北京“卖房热”");
News news4 = new News("春节临近北京“卖房热”");
//将新闻对象存入HashSet集合中
HashSet hashSet = new HashSet();
hashSet.add(news1);
hashSet.add(news2);
hashSet.add(news3);
hashSet.add(news4);
//打印新闻标题
for (Object news : hashSet){
News news5 = (News) news;
System.out.println(news5.getTitle());
}
//要求使用equals方法比较新闻时,只要标题相同,就认为是同一新闻
//新闻一与新闻二的比较结果
System.out.println("新闻一与新闻二的比较结果是:"+(news1.getTitle()).equals((news2.getTitle())));
//news1.equals(news2);
//新闻三与新闻四的比较结果
System.out.println("新闻三与新闻四的比较结果是:"+(news3.getTitle()).equals((news4.getTitle())));
//news3.equals(news4);
//遍历集合,打印新闻类对象
for (Object news : hashSet){
News news6 = (News) news;
System.out.println(news6.toString());
}
//打印集合中新闻数量
System.out.println("集合中的新闻数量是:"+hashSet.size());
}
}