1、集合
(1)数组就是一个集合,是一个容器来容纳数据
(2)存储的是java对象地址或者引用
(3)每一个不同的集合底层都是不同的数据结构
new ArrayList();
new LinkedList();
new TreeList();
(4)存储方式为就单独存储元素以及以键值对的方式存储元素
2、Collection
如果没有使用泛型集合可以储存所有Object子类
如果使用泛型只能储存相对应的具体类型
ArrayList<NewsTitle> al = new ArrayList<NewsTitle>();
List<NewsTitle> list = new LinkedList<NewsTitle>();
HashMap<String,String> hm = new HashMap<String, String>();
3、集合的方法
(1)c.add(122);添加元素
(2)c.size(); 查看集合中元素的个数
(3)c.clear(); 清除集合中的东西
(4)c.contains(Object 0);
返回的是布尔值
查找集合中元素是否存在
(5)c.remove(); 删除集合中的某个元素
(6)c.isEmpty();
判断集合中是否存在元素
(7)c.toArray();
把集合转换成数组
4、集合的遍历/迭代
(1)普通for循环或者增强for循环进行遍历
for (int i = 0; i < al.size(); i++) {
Object o = al.get(i);
System.out.println(o);
}
for (Object object : hs) {
Demo1 nt = (Demo1) object;
System.out.println(nt);
}
(2)采取集合的迭代器Iterator
在使用迭代器之前先获取迭代器
Iterator it =c.iterator();
第二步通过迭代器开始遍历
一开始迭代器并没有指向第一个元素需要使用两个方法来辅助
it.haseNext();
首先进行判断集合中有无东西
然后利用it.mext();
前进一位并且返回当前值
Iterator it = hs.iterator();
while (it.hasNext()) {
Object object = it.next();
Demo1 nt = (Demo1) object;
System.out.println(nt);
}
(3)键值对遍历,将hm集合中的键值对整体取出来后放入到Set集合中
使用entrySet()方法将hm集合中的键值对整体取出来放在Set集合中
然后使用增强for循环或者迭代器取出Set集合中的键值对元素,取出来的是Object类型,实际上键值对的真正类型是Map.Entry类型
所以将取出来的元素强制转换为Map.Entry类型,Map.Entry类中有getKey()方法获取键值对的键,有getValue()方法获取键值对的值
Set<String> keys1 = hm.keySet();
Iterator<String> it = keys1.iterator();
while (it.hasNext()) {
String key = it.next();
Student value = hm.get(key);
System.out.println(key + "---" + value);
}
5、例
public class Student implements Comparable<Student> {
private String name;
private String gender;
private int age;
public Student() {
}
public Student(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Student student) {
if(this.getAge()>student.getAge()){
return 1;
}else if(this.getAge()==student.getAge()){
return 0;
}else{
return -1;
}
}
}
package cn.day024泛型;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
HashMap<String, Student> hm = new HashMap<>();
Student stu1 = new Student("张三", "男", 22);
Student stu2 = new Student("李四", "男", 23);
Student stu3 = new Student("如花", "女", 25);
//存储
hm.put("jack", stu1);
hm.put("bob", stu2);
hm.put("lisa", stu3);
Set<String> keys = hm.keySet();
for (String jian : keys) {
Student value = hm.get(jian);
System.out.println(jian + "---" + value);
}
System.out.println("*************************************************");
//
Set<String> keys1 = hm.keySet();
Iterator<String> it = keys1.iterator();
while (it.hasNext()) {
String key = it.next();
Student value = hm.get(key);
System.out.println(key + "---" + value);
}
System.out.println("*************************************************");
//
Set<Map.Entry<String, Student>> keyValues = hm.entrySet();
for (Map.Entry<String, Student> me : keyValues) {
String key = me.getKey();
Student value = hm.get(key);
System.out.println(key + "---" + value);
}
}
}