20200729集合框架与泛型(Iterator接口,Map接口,Collection类和泛型)
程序员文章站
2022-03-03 08:06:29
集合框架与泛型(Iterator接口,Map接口,Collection类和泛型)一.Iterator接口二.Map接口1.HashMap实现类三.Collection类1.对集合元素排序和查找2..替换集合元素四.泛型五.快速排序一.Iterator接口1.hasNext()方法:判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true.2.next()方法:返回要访问的下一元素3.步骤:导入Iterator接口使用集合的iterate()返回Iterator对象while循环遍...
集合框架与泛型(Iterator接口,Map接口,Collection类和泛型)
一.Iterator接口
1.hasNext()方法:判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true.
2.next()方法:返回要访问的下一元素
3.步骤:
- 导入Iterator接口
- 使用集合的iterate()返回Iterator对象
- while循环遍历
- 使用Iterator的hasNext()方法判断是否存在下一个可访问的元素
- 使用next()方法返回要访问的下一个元素
4.代码
Iterator it=list.iterator()
while(it.hasNext()){
String name=(String)it.next();
System.out.println(name);
}
二.Map接口
1.HashMap实现类
- 导入HashMap类:
import java.util.HashMap;
import java.util.Map; - 创建HashMap对象:
Map students=new HashMap(); - 常用方法:
map.put(“US”,“美国”);//增
map.get(“CN”);//查
map.remove(“US”);//删
map.put(“CN”,“中国”);//改 - 遍历的四种方式:
遍历key的方式:
Set keys=map.keySet();
for(Object key:keys){
System.out.println(key+":"+map.get(key));
}
遍历value的方式:
Collection values=map.values();
for(Object value:values){
System.out.println(value);
}
获取键值对:
Set entry = map.entrySet();
for(Object o:entry){
System.out.println(o);
}
iterator遍历:
Set keys=map.keySet();
Iterator itr=keys.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
public class TestHashMap {
public static void main(String[] args) {
//创建学员对象
Student student1=new Student("胡","女");
Student student2=new Student("易烊千玺","男");
//创建保存"键-值对
Map<String,Student> students=new HashMap<String, Student>();
//把英文名称与学员对象按照"键值对"的方式存储在HashMap中
students.put("OldHu",student1);
students.put("Jackson",student2);
//输出英文名
/* System.out.println("学生英文名:");
for(Object key:students.keySet()){
System.out.println(key.toString());
}*/
//输出学生详细信息
/*System.out.println("学生详细信息:");
for(Object value:students.values()){
Student student=(Student)value;
System.out.println("姓名:"+student.getName()+", 性别:"+student.getSex());
}*/
//输出学员个数
/*System.out.println("已添加"+students.size()+"个学员信息");
System.out.println("键集:"+students.keySet());*/
String key="OldHu";
//判断是否存在"jack"这个键,如果存在,则根据键获取相应的值
if(students.containsKey(key)){
Student student=(Student)students.get(key);
System.out.println("英文名为"+key+"的学员姓名:"+student.getName()+",性别是"+student.getSex());
}
/* Set entry=students.entrySet();
for(Object o:entry){
System.out.println("英文名为"+students.get(o)+"的学员姓名:"+students.keySet()+",性别是"+students.values());
}*/
/*String key1="Rose";
if (students.containsKey(key1)) {
students.remove(key1);
System.out.println("学员"+key1+"的信息已删除");
}*/
}
}
三.Collection类
java提供的一个集合操作工具类,用于对集合元素的排序,查找和替换等操作。
1.对集合元素排序和查找
- Comparable接口,compareTo():返回值:负整数·,零,正整数
- sort():ArrayList list=new ArrayList;Collection.sort(list);//排序
- binarySearch():index=Collection.binarySearch(list,student3);//查找下标
2…替换集合元素
- Collection.fill(list,“haha”);替换集合内的元素
四.泛型
1.定义:参数化类型
2.定义语法:类1或者接口<类型实参>对象=new 类2<类型实参>()
ArrayListlist=new ArrayList();
表明:ArrayList集合list存储的元素类型必须是String类型
五.快速排序
参考博客链接:https://blog.csdn.net/shujuelin/article/details/82423852
public class Quicksort {
public static void quick(int[]a,int start,int end){
//把首位定为标准位tmp
int i=start,j=end;
if(i>=j)return;
int tmp=a[i];
//i=start j=end
//循环条件:知道i<j,直到等于
//循环内要有两个循环来重复i++和j--的过程
while(i<j){
while(a[j]>=tmp&&i<j){j--;} //如果该数大于基准位,则j--即可
a[i]=a[j];//不满足上一条循环条件,则需要进行对应赋值,不满足条件时,说明当前a[j]小于基准位,则吧该数赋值给a[i];
//i++;
while(a[i]<=tmp&&i<j)i++;//如果该数小于基准位,则i++即可
a[j]=a[i];//不满足条件时,那就将a[i]赋值给a[j]
// j--;
}
a[i]=tmp; //出外层循环时,把标准位插入在i处
quick(a,start,i-1);
quick(a,i+1,end);
//递归调用(自己调自己)
}
public static int[] randomArray(int length){
int[] a=new int[length];
for (int i = 0; i <a.length ; i++) {
//随机数生成
Random r=new Random();
a[i]=r.nextInt(100);
}
return a;
}
public static void main(String[] args) {
int[] a=randomArray(10);//生成随机数组
System.out.println(Arrays.toString(a));//
long now=System.currentTimeMillis();//当前时间
quick(a,0,a.length-1);
System.out.println(Arrays.toString(a));
long used=System.currentTimeMillis()-now;
System.out.println("花费:"+used);
}
}
本文地址:https://blog.csdn.net/May_J_Oldhu/article/details/107698024
上一篇: Java代理模式的深入了解
下一篇: POJ-3279 枚举+dfs