4月20日学习总结————集合框架、泛型

一、集合框架体系
1.Java集合框架提供了一套性能优良、使用方便的接口类,它们位于Java.util包中;
2.接口Iterator(迭代器),CollectionListSetMap   其中List与Set都是继承Collection
3.实现类:(1)List接口的实现类有:ArrayList LinkedList

             (2)Set接口的实现类有:HashSet,TreeSet

             (3)Map接口的实现类有:HashMap,TreeMap

4.实用工具类: Collections,Arrays

5.各个接口的存储特性:Collection:存储一组不唯一,无序的对象 

                                  List:接口存储一组不维一,有序(插入顺序)的对象        

                                  Set接口存储一组维一,无序的对象   

                                 Map:接口存储一组键值对象,提供key到value的映射
(1)ArrayList实现了长度可变的数组,在内存中分配连续空间,遍历元素和随机访问元素的效率比较高;
 
 

参考代码:串讲一个引用类

public class News {
 private int id;       //编号  private String title;   //标题  private String author;  //作者  public int getId() {  return id; } public void setId(int id) {  this.id = id; } public String getTitle() {  return title; } public void setTitle(String title) {  this.title = title; } public String getAuthor() {  return author; } public void setAuthor(String author) {  this.author = author; }
}

News new1=new News();   //实例化新闻对象  new1.setId(1);  new1.setAuthor("陈京旗");  new1.setTitle("学习java");
ArrayList arrayList =new ArrayList();    //这里的arrayList为集合名,实体化集合,集合里的都是object类
 
 

arrayList.add(new1);        //给集合里添加对象,第一 条 新闻等,可以添加多条,例: arrayList.add(new2);  
System.out.println(arrayList.size());    //输出集合的长度
for (int i = 0; i <arrayList.size(); i++) {      //遍历集合
    News news=(News)arrayList.get(i);  //强制类型转换,object类arrayList转换为news对象,循环arrayList集合里的新闻news
   System.out.println(news.getTitle());  //调用 ,返回所有的标题
  }
(2)LinkedList采用链表存储方式,插入和删除元素是效率比较高;

public class Text1 {
 
 public static void main(String[] args) {
  
  News new1=new News();
  new1.setId(1);
  new1.setAuthor("陈京旗");
  new1.setTitle("学习java");

LinkedList linkedList  =new LinkedList();    //这里的linkedList关键字为有序不唯一集合,实体化集合,集合里的都是object类
 linkedList .add(new1);         // 给集合里添加对象,第一 条 新闻等,可以添加多条,例:   linkedList .add(new2);

linkedList .addFirst(news3);  //把给对象放到集合的第一位

linkedList .addLast(news2);  //把给对象放到集合的最后一位

linkedList .remove(news1);  //删除集合中的某一个对象


System.out.println(linkedList .size()); //输出集合的长度
  System.out.println(((News)(linkedList.get(0))).getTitle());//这里把object类linkedList集合强转为News集合,调用下标为0的News集合 的getTitle方法,也就是new1的getTitle方法
  /*  for (int i = 0; i <linkedList .size(); i++) {     //遍历集合
    News news=(News)linkedList .get(i);
   System.out.println(news.getTitle());  //调用 ,返回所有的标题
  }
   */  

Set 接口 实现类是HashSet  (维一,无序)

Set s=new HashSet();  //HashSet唯一、无序集合  //实例化一个set的集合对象  (注:实例要导包)

s.add(news1);          //给集合内添加一个对象

注:因为Set接口存储的对象的无序的,不能用下标遍历,所以遍历Set集合只能用:”增强型for“和“Iterator迭代”。

增强型for for (Object obj : s) {         //Object :遍历的对象类型   obj:对象名    s:Set集合名
News biaoTi=(News)obj;      //把原类型为Object的obj强制转换为News的对象
System.out.println(biaoTi.getTitle());

}

Iterator迭代器遍历:

Iterator的方法:boolean hasNext();   //判断集合里是否存在另一个可访问的元素,返回ture或false 

                         Object next();   //返回要访问的下一个元素

Iterator it=s.iterator();   //获得迭代器   迭代器名:it (注:获取要导Iterator 的包)

while(it.hasNext()) {                     //利用循环,判断集合是否还有下个元素,返回ture,继续循环,返回false则退出循环
News biaoTi=(News)it.next();     //因为it.next();是object类型的,需要强制转换。
System.out.println(biaoTi.getTitle());     //遍历输出Set集合里每一个对象中的属性

}

Map接口

Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作。

Map接口最常用的实现类的HashMap;(key ;value)

 Map map=new HashMap();     //实例一个MAP集合 

map.put("china","中国" );        //集合里添加一个键值对   ;"CN"=key(键),"中国"=value(值)

String cn1=(String)map.get("china")   //通过键获取相对应的值,,需要强制转换

System.out.println(cn1);      //输出值

map.clear();         //清空集合中的键值对


  

泛型

将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。(参数化类型)

Student stu1=new Student("张三","男");

        Map<String,Student> map=new HashMap<String, Student>();

           map.put("ming", stu1);

            for (String s : map.keySet() ){
System.out.println(s+"对应的学员姓名是"+map.get(s).getName()+"学员性别是:"+map.get(s).getSex());
}

猜你喜欢

转载自blog.csdn.net/chenjingqi101/article/details/80041433