java里面集合框架是比较重要的基础知识,虽然不是很难,但经常使用,特别是ArrayList、HashMap经常用到。java集合框架大致分为三个部分,分别是List、Set、Map,这三个都是接口,其具体实现有多个类,但常用的分别是ArrayList、HashSet、HashMap,下面分别总结一下这三者的基本使用方法。
(1)ArrayList使用较广,其功能相当于一个数组队列,存取速度快,具体使用,请看下面的代码:
写道
package com.gzy0930_L2集合类;
import java.util.ArrayList;
//集合类的使用
public class L2_1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Student> al=new ArrayList<>();
Student stu1=new Student();
Student stu2=new Student();
Student stu3=new Student();
stu1.setSno(01);
stu1.setAge(10);
stu1.setSname("孙悟空");
stu2.setSno(02);
stu2.setAge(20);
stu2.setSname("猪八戒");
stu3.setSno(03);
stu3.setAge(30);
stu3.setSname("沙悟净");
//增加对象
al.add(stu1);
al.add(stu2);
al.add(stu3);
//遍历
for(int i=0;i<al.size();i++){
Student stu=al.get(i);
System.out.println("第"+(i+1)+"个学生的姓名为:"+stu.getSname()+"\n学号为:"+stu.getSno()+"\n年龄为:"+stu.getAge());
}
//删除第一个对象
al.remove(0);
for(int i=0;i<al.size();i++){
Student stu=al.get(i);
System.out.println("第"+(i+1)+"个学生的姓名为:"+stu.getSname()+"\n学号为:"+stu.getSno()+"\n年龄为:"+stu.getAge());
}
Student stu4=new Student();
stu4.setSno(04);
stu4.setAge(40);
stu4.setSname("唐僧");
//在指定位置添加对象
al.add(0, stu4);
for(int i=0;i<al.size();i++){
Student stu=al.get(i);
System.out.println("第"+(i+1)+"个学生的姓名为:"+stu.getSname()+"\n学号为:"+stu.getSno()+"\n年龄为:"+stu.getAge());
}
}
}
import java.util.ArrayList;
//集合类的使用
public class L2_1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Student> al=new ArrayList<>();
Student stu1=new Student();
Student stu2=new Student();
Student stu3=new Student();
stu1.setSno(01);
stu1.setAge(10);
stu1.setSname("孙悟空");
stu2.setSno(02);
stu2.setAge(20);
stu2.setSname("猪八戒");
stu3.setSno(03);
stu3.setAge(30);
stu3.setSname("沙悟净");
//增加对象
al.add(stu1);
al.add(stu2);
al.add(stu3);
//遍历
for(int i=0;i<al.size();i++){
Student stu=al.get(i);
System.out.println("第"+(i+1)+"个学生的姓名为:"+stu.getSname()+"\n学号为:"+stu.getSno()+"\n年龄为:"+stu.getAge());
}
//删除第一个对象
al.remove(0);
for(int i=0;i<al.size();i++){
Student stu=al.get(i);
System.out.println("第"+(i+1)+"个学生的姓名为:"+stu.getSname()+"\n学号为:"+stu.getSno()+"\n年龄为:"+stu.getAge());
}
Student stu4=new Student();
stu4.setSno(04);
stu4.setAge(40);
stu4.setSname("唐僧");
//在指定位置添加对象
al.add(0, stu4);
for(int i=0;i<al.size();i++){
Student stu=al.get(i);
System.out.println("第"+(i+1)+"个学生的姓名为:"+stu.getSname()+"\n学号为:"+stu.getSno()+"\n年龄为:"+stu.getAge());
}
}
}
(2)为优化查询速度而设计的Set。要放进HashSet里面的Object还得定义hashCode()。一定要记住,Set要有一个判断以什么顺序来存储元素的标准,也就是说你必须实现Comparable接口,并且定义compareTo()方法。 要使用的学生类代码如下:
package com.gzy0930_L2集合类;
public class Student {
private int sno;
private String sname;
private int age;
public void setSno(int sno){
this.sno=sno;
}
public void setSname(String sname){
this.sname=sname;
}
public void setAge(int age){
this.age=age;
}
public int getSno(){
return sno;
}
public String getSname(){
return sname;
}
public int getAge(){
return age;
}
}
(3)Map是一种键对象和和值对象相关联的一种容器,HashMap是Map的一种实现,里面有key和value一一映射,key值唯一,如果后面重复前面的键值,就会将前面的数据覆盖,不会出现两个相同的key。HashMap相当于数组与链表的结合,存取速度快而且便于删除添加,HashMap使用通过key找到相应的value,遍历需要用到迭代器Iterator。代码如下:
package com.gzy0930_L2集合类;
import java.util.HashMap;
import java.util.Iterator;
//hashmap中有个键值唯一标识每一个元素,使存入其中的对象不会有重复
//可避免重复
//hashmap先进先出
public class L2_5 {
public static void main(String[] args) {
HashMap<String,Student> hm=new HashMap<>();
Student stu1=new Student();
Student stu2=new Student();
Student stu3=new Student();
stu1.setSno(01);
stu1.setAge(10);
stu1.setSname("孙悟空");
stu2.setSno(02);
stu2.setAge(20);
stu2.setSname("猪八戒");
stu3.setSno(03);
stu3.setAge(30);
stu3.setSname("沙悟净");
//添加方式有所不同
/**
* 如果后面的键值和前面相同,就会覆盖其前面的对象,
* hashmap中不可能出现两个相同的键值
*/
hm.put("001", stu1);
hm.put("002", stu2);
hm.put("003", stu3);
//遍历
Iterator<String> it=new Iterator<String>() {
public boolean hasNext() {
return false;
}
public String next() {
return null;
}
public void remove() {
}
};
it=hm.keySet().iterator();
int i=0;
while(it.hasNext()){
i++;
String key=it.next().toString();
Student stu=hm.get(key);
System.out.println("第"+(i)+"个学生的姓名为:"+stu.getSname()+"\n学号为:"+stu.getSno()+"\n年龄为:"+stu.getAge());
}
}
}