Java集合框架
Java中集合类的定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类区别是:
Java.util.Set接口及其子类,提供的是一个无序的集合。Java.util.List 接口及其子类,提供的是一个有序的集合。
Java.util.Map接口及其子类,map提供的是一个无序的集合,其子类不一定。
示例:首先有一个student()类。
public class Student {
public Student(){}
public Student(String a, int t) {
this.a = a;
this.t = t;
}
public String a;
public int t;
public void showInfo() {
System.out.println(a+"\t\t编号"+t);
}
}
1•Set:
public class settest {
public static void main(String[] args){
settest set=new settest();
java.util.Collection<Student> jc=set.print(10);
System.out.println("集合中所有的元素为"+jc.size());
//将set中的元素取出并打印
//set是无序的因此使用迭代器
java.util.Iterator<Student> it=jc.iterator();
//遍历
while(it.hasNext()){
Student stu1=it.next();
stu1.showInfo();
}
}
public java.util.Collection<Student> print(int count){
//创建一个集合对象
java.util.Set<Student> st=new java.util.HashSet<Student>();
for(int i=0;i<count;i++){
Student stu=new Student("学生"+((char)(i+65)),i+1);
st.add(stu);
}
return st;
}
}
Set的特点是无序的,因此查询输出时,必须用到迭代器。同时set只能存储不同信息。
2•List:
import java.util.ArrayList;
public class listtest {
public static void main(String[] args){
listtest lt=new listtest();
lt.print();
}
public void print(){
listtest lt=new listtest();
java.util.List<Student> list=lt.getuser(10);
for(int i=0;i<list.size();i++){
Student stu= list.get(i);
stu.showInfo();
}
}
public java.util.List<Student> getuser(int count){
java.util.List<Student> li=new ArrayList<Student>();
for(int i=0;i<count;i++){
Student stu=new Student("学生"+((char)(65+i)),i+1);
li.add(stu);
}
return li;
}
}
List是有序的,因此查询时用循环遍历即可。
3•map
public class Maptest {
public static void main(String[] args){
Maptest map=new Maptest();
java.util.Map<String, Student> mp1=map.getusers(10);
map.print(mp1);
String key="编号"+3;
Student stu=mp1.get(key);
stu.showInfo();
}
public java.util.Map<String , Student > getusers(int count){
java.util.Map<String, Student> mp=new java.util.HashMap<String, Student>();
for(int i=0;i<count;i++){
Student stu=new Student("学生"+((char)(i+65)),i+1);
mp.put("编号"+(i+1), stu);
}
return mp;
}
public void print(java.util.Map<String, Student> mp){
java.util.Set<String> st=mp.keySet();
java.util.Iterator<String> it=st.iterator();
while(it.hasNext()){
String key=it.next();
Student stu=mp.get(key);
stu.showInfo();
}
}
}
Map是用键值对来存储和查找的。Map存储的键值不能相同。
Java中集合类的定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类区别是:
Java.util.Set接口及其子类,提供的是一个无序的集合。Java.util.List 接口及其子类,提供的是一个有序的集合。
Java.util.Map接口及其子类,map提供的是一个无序的集合,其子类不一定。
示例:首先有一个student()类。
public class Student {
public Student(){}
public Student(String a, int t) {
this.a = a;
this.t = t;
}
public String a;
public int t;
public void showInfo() {
System.out.println(a+"\t\t编号"+t);
}
}
1•Set:
public class settest {
public static void main(String[] args){
settest set=new settest();
java.util.Collection<Student> jc=set.print(10);
System.out.println("集合中所有的元素为"+jc.size());
//将set中的元素取出并打印
//set是无序的因此使用迭代器
java.util.Iterator<Student> it=jc.iterator();
//遍历
while(it.hasNext()){
Student stu1=it.next();
stu1.showInfo();
}
}
public java.util.Collection<Student> print(int count){
//创建一个集合对象
java.util.Set<Student> st=new java.util.HashSet<Student>();
for(int i=0;i<count;i++){
Student stu=new Student("学生"+((char)(i+65)),i+1);
st.add(stu);
}
return st;
}
}
Set的特点是无序的,因此查询输出时,必须用到迭代器。同时set只能存储不同信息。
2•List:
import java.util.ArrayList;
public class listtest {
public static void main(String[] args){
listtest lt=new listtest();
lt.print();
}
public void print(){
listtest lt=new listtest();
java.util.List<Student> list=lt.getuser(10);
for(int i=0;i<list.size();i++){
Student stu= list.get(i);
stu.showInfo();
}
}
public java.util.List<Student> getuser(int count){
java.util.List<Student> li=new ArrayList<Student>();
for(int i=0;i<count;i++){
Student stu=new Student("学生"+((char)(65+i)),i+1);
li.add(stu);
}
return li;
}
}
List是有序的,因此查询时用循环遍历即可。
3•map
public class Maptest {
public static void main(String[] args){
Maptest map=new Maptest();
java.util.Map<String, Student> mp1=map.getusers(10);
map.print(mp1);
String key="编号"+3;
Student stu=mp1.get(key);
stu.showInfo();
}
public java.util.Map<String , Student > getusers(int count){
java.util.Map<String, Student> mp=new java.util.HashMap<String, Student>();
for(int i=0;i<count;i++){
Student stu=new Student("学生"+((char)(i+65)),i+1);
mp.put("编号"+(i+1), stu);
}
return mp;
}
public void print(java.util.Map<String, Student> mp){
java.util.Set<String> st=mp.keySet();
java.util.Iterator<String> it=st.iterator();
while(it.hasNext()){
String key=it.next();
Student stu=mp.get(key);
stu.showInfo();
}
}
}
Map是用键值对来存储和查找的。Map存储的键值不能相同。