概述
1、 集合弥补了数组的缺陷,它比数组更灵活实用,而且不同的集合适用于不同场合。
2、 Java集合框架共有3大类接口,即Map接口、List接口和Set接口。
3、 ArrayList和数组采用相同的存储方式,它的特点是长度可变且可以存储任何类型的数据,它的优点在于遍历元素和随机访问元素的效率较高。
4、 LinkedList类采用链表存储方式,优点在于插入、删除元素时效率较高。
5、 Iterator为集合而生,专门实现集合的遍历,它隐藏了各种集合实现类的内部细节,提供了遍历集合的统一编程接口。
6、 HashMap类是最常用的Map实现类,它的特点是存储键值对数据,优点是查询指定元素效率高。
7、 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,使代码可以应用于多种数据类型。
8、 使用泛型集合在创建集合对象时指定集合中元素的类型,从集合中取出元素时无需进行强制类型转换。
9、 在集合中使用泛型只是泛型多种应用的一种,在接口、类、方法等方面也有着泛型的广泛应用。
10、 如果数据类型不确定,可以通过泛型方法的方式,达到简化代码、提高代码重用性的目的。
4.1为什么使用集合框架
5 总结之前的储存数据的容器
package cn.bdqn.demo01;
public class Demo01 {
public static void main(String[] args) {
/*
* 凡是能够用来存储数据的都可以看成是容器:
*
* 变量:存储数据的空间(装数据的容器),一个变量中只能存储一个数据
* 数组:存储数据的空间(装数据的容器),一个数组中可以存储多个相同类型的数据
* 对象:可以理解成存储数据的空间(装数据的容器),一个对象可以拥有不同类型的属性,从而达到存储不同类型数据的目的
* 集合:存储数据的空间(装数据的容器),一个集合中可以存储多个不同类型的数据
* 计算机中的文件:将数据通过IO流存储到计算机的某个文件中
* XML:从计算机的XML文件中读取数据或者存储数据到XML文件中
* 数据库:专门用来存储和管理数据的软件
*
*/}
}
5.1Java集合框架包含的内容2-2
5.2 学会查看API
5.3 ArrayList集合类 === Set接口
新闻管理系统,需求如下
可以存储各类新闻标题(包含ID、名称、创建者)
可以获取新闻标题的总数
可以逐条打印每条新闻标题的名称
3.1新闻类:
package cn.bdqn.demo02;
public class NewsTitle {
private int id;
private String name;
private String author;
public NewsTitle() {
super();
}
public NewsTitle(int id, String name, String author) {
super();
this.id = id;
this.name = name;
this.author = author;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "NewsTitle [id=" + id + ", name=" + name + ", author=" + author
+ "]";
}
}
3.2创建类对象
package cn.bdqn.demo02;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListDemo01 {
public static void main(String[] args) {
//创建3个NewsTitle类对象
NewsTitle nt1 = new NewsTitle(1001, "以武力吞请入俄新动作", "前沿时刻");
NewsTitle nt2 = new NewsTitle(1002, "没想到,“裁”这么快就来了", "表哥聊科技");
NewsTitle nt3 = new NewsTitle(1003, "再过4天,要放7天假", "北大青鸟合肥一元教育");
//数据准备好了,接下来要准备一个集合容器,使用ArrayList
ArrayList al = new ArrayList();
//将数据存储到集合中,使用ArrayList类中的add()方法将数据存储到集合中
al.add(nt1);
al.add(nt2);
al.add(nt3);
---------------> al.add(nt2);
//将数据存储到集合中的指定位置:add(int index,Object obj)
al.add(2, nt1)
3.3 接下来对集合中元素的操作,都是通过集合对象名al调用方法来实现
//1)获取集合中的元素个数:size()
int size =al.size();
System.out.println("al集合中元素个数:"+size);
//2)获取集合中某个指定下标的元素:get(int index)
//获取集合中的第一个元素
Object obj1 =al.get(0);
//System.out.println(obj1);-------------->输出为地址值
NewsTitle nt = (NewsTitle)obj1;
System.out.println(nt);
//3)遍历集合中的元素
for(int i =0;i<al.size();i++){
Object object=al.get(i);
NewsTitle newsTitle = (NewsTitle)object;
System.out.println(newsTitle);
}
//4)判断集合中是否包含某一个元素:contains()
boolean result1 = al.contains(nt3);
System.out.println("集合中包含nt3这个元素:"+result1);
//5)删除集合中的元素:remove(元素名)/remove(元素下标)
boolean result2 =al.remove(nt3);
System.out.println("元素删除成功:"+result2);
3.4 list遍历的三种方法
//5)删除集合中的元素:remove(元素名)/remove(元素下标) boolean result2 =al.remove(nt3); System.out.println("元素删除成功:"+result2); System.out.println("****************************************"); //删除后使用增强for循环遍历集合 for(Object object:al){ NewsTitle newsTitle = (NewsTitle)object; System.out.println(newsTitle); } System.out.println("****************************************"); Object obj=al.remove(1); System.out.println(obj); System.out.println("****************************************"); //删除元素后使用迭代器遍历集合:iterator() /* * Iterator:迭代器,可以将它看成是集合容器 * 将集合al中得元素转移到了Iterator中 * 接下来使用hasNext()方法判断Iterator容器中是否有元素,如果有返回true,那么就调用next()方法取出集合中的元素 * 如果hasNext()方法返回false,说明Iterator容器中没哟元素
Iterator it =al.iterator();
--------> //从it容器中取出元素
while(it.hasNext()){
Object object =it.next();
NewsTitle ntt = (NewsTitle)object;
System.out.println(ntt);
}
---------> //判断集合是否为空:isEmpty()
boolean result3 =al.isEmpty();
System.out.println("集合为空:"+result3);
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
--------------> //将集合中的元素转换为数组:toArray()
Object[] objs=al.toArray();
for (int i = 0; i < objs.length; i++) {
System.out.println(objs[i]);
}
----------->//清空集合:clear()
al.clear();
System.out.println(al.size());
System.out.println(al.isEmpty());
LinkedList集合类2-1
public static void main(String[] args) {
// 创建3个NewsTitle类对象
NewsTitle nt1 = new NewsTitle(1001, "以-违!乌国四州申请入俄后,古作",
"前沿时刻");
NewsTitle nt2 = new NewsTitle(1002, "中芯国际“赌赢”了!也没想到,“制裁”这么快就来了",
"表哥聊科技");
NewsTitle nt3 = new NewsTitle(1003, "再过4天,要放7天假", "北大青鸟合肥一元教育");// 数据准备好了,接下来要准备一个集合容器,使用LinkedList
List list = new LinkedList();
//将数据存储到集合中
list.add(nt1);
list.add(nt2);
list.add(nt3);
//将nt3这个元素存储到集合的第一个位置
//接口的引用无法调用实现类中特有的方法,需要进行向下转型
// list.addFirst(nt3);
LinkedList linkList = (LinkedList)list;
linkList.addFirst(nt3);
//遍历元素
for (int i = 0; i < linkList.size(); i++) {
Object obj1=linkList.get(i);
NewsTitle ntt = (NewsTitle)obj1;
System.out.println(ntt);
}
System.out.println("-------------------------");
//获取集合中的第一个元素
Object obj2=linkList.getFirst();
NewsTitle ntt2 = (NewsTitle)obj2;
System.out.println(ntt2);
//获取集合中的最后一个元素
Object obj3=linkList.getLast();
NewsTitle ntt3 = (NewsTitle)obj3;
System.out.println(ntt3);
//删除集合中的第一个元素和最后一个元素
System.out.println("删除的第一个元素是:"+linkList.removeFirst());
System.out.println("删除的最后一个元素是:"+linkList.removeLast());
System.out.println("集合为空:"+linkList.isEmpty());
linkList.clear();
System.out.println("集合为空:"+linkList.isEmpty());
}}
Set接口存储一组唯一,无序的对象
HashSet是Set接口常用的实现类
Set中存放对象的引用
Set set=new HashSet();
String s1=new String("java");
String s2=s1;
String s3=new String("JAVA");
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size())
6 接口 Map<K,V>
用法:
6.1 public interface Map<K,V>
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
6.2 代码展示方法的用法
Student类
package cn.bdqn.demo04;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "name=" + name + ", age=" + age;
}
}
6.2 Map方法
package cn.bdqn.demo04;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapDemo02 {
public static void main(String[] args) {
//创建3个Student类对象
Student stu1 = new Student("张三", 18);
Student stu2 = new Student("李四", 19);
Student stu3 = new Student("如花", 20);
//创建集合容器
Map map = new HashMap();
//将学生对象和其英文名称存储到集合中
map.put("JackMa", stu1);
map.put("TomLei", stu2);
map.put("MissDong", stu3);
7 遍历map集合 -----三种方式
//遍历map集合
//获取键的集合,然后通过键来找值
Set keys=map.keySet();
for(Object obj1:keys){
String key = (String)obj1;
Object obj2 =map.get(key);
Student student1 = (Student)obj2;
System.out.println(key+"对应的学生:"+student1);
}
iterator*****
Iterator it = keys.iterator();
while(it.hasNext()){
Object obj3=it.next();
String key2 = (String)obj3;
Object obj4 =map.get(key2);
Student student2 = (Student)obj4;
System.out.println(key2+"对应的学生:"+student2);
}
//map集合的第3种遍历方式
Set keyValues=map.entrySet();
for(Object obje:keyValues){
Map.Entry me =(Map.Entry)obje;
//获取键
Object ob1 = me.getKey();
String key = (String)ob1;
//获取值
Object ob2 =me.getValue();
Student student = (Student)ob2;
System.out.println(key+"对应的学生:"+student);
最后
以上就是聪慧雨为你收集整理的java进阶----集合的全部内容,希望文章能够帮你解决java进阶----集合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复