使用集合存储对象

1、  为什么需要集合框架。

如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象,可以考虑使用JAVA集合框架。

2、  JAVA集合框架由以下三部分组成。

2.1、接口

    Collection是最基本的集合接口,一个Collection代表一组元素。

List接口继承自CollectionList是有序集合,充许有相同的元素,使用List能够精确地控制每个元素插入的位置,用户能够使用索引来访问List中的元素,类似于数组。

2.2、具体类

实现List的常用类有ArrayListLinkedList。它们都可以容纳所有类型的对象,包括null,并且都保证元素的存储顺序。

ArrayList实现了可变大小的数组。它的优点在于遍历元素和随机访问元素的效率比较高。

LinkedList提供了额外的addFirst()addLast()removeFirst()removeLast()等方法,可以在LinkedList的或尾部进行插入或者删除操作。LinkedList采用双向列表存储数据。相较于ArrayList,在插入或删除元素时,LinkedList提供更好的性能。这些方法使得LinkedList可以被用作堆栈(stack)或者队列(queue)。

HashMapMap接口的实现类,实现一个键到值映射的哈希表。

2.3JAVA集合框架提供了类Collections,它提供了对集合进行排序等多种算法实现。

3List接口和ArrayList

List接口中常用方法

返回类型

方 法

说 明

boolean

add(Object o)

在列表的末尾顺序添加元素,起始索引位置从0开始。

int

size()

返回列表中的元素个数。

Object

get(int index)

返回指定索引位置处的元素

注意:取出的元素是Object类型,使用前需要进行强类型转换。

void

add(int index,Object o)

在指定的索引位置添加元素。注意:索引位置必须介于0和列表中元素个数之间。

boolean

contains(Object o)

判断列表中是否存在指定元素

boolean

remove(Object o)

从列表中删除元素

 

4、  List接口和LinkedList

LinkedList中的一些方法

返回类型

方 法

说明

void

addFirst(Object o)

在列表的首部添加元素

void

addLast(Object o)

在列表的末尾添加元素

Object

getFirst()

返回列表中的第一个元素

Object

getLast()

返回列表中的最后一个元素

Object

removeFirst()

删除并返回列表中的第一个元素

Object

removeLast()

删除并返回列表中的最后一个元素

 

5、  Map接口和HashMap接口

HashMap的常用方法

返回类型

方法

说明

Object

put(Object key,Object value)

以“键-值对”的方式进行存储。键必须是唯一的,值可以重复。如果试图添加重复的键,那么最后加入的键-值对将替换掉原先的键-值对。

Set

keySet()

返回键的集合。

Collection

values()

返回值的集合。

boolean

containsKey(Object key)

如果存在由指定的键映射的“键-值对”,返回true

Object

get(Object key)

根据键返回相关联的值,如果不存在指定的键,返回null

Object

Remove(Object key)

删除由指定的键映射的“键-值对”。

 

6、  toString()方法。

每个类都有toString()方法,从Object类继承而来,toString()方法代表一个类的字符串描述。当执行语句“System.out.println(类对象)”时,会默认调用该类的toString()方法。由于Object中的toString()方法用来输出类的内存地址等信息,因此,有时候为了特殊需要可以重写toString()方法,以便返回需要的内容。

 

-------------------------------------------------------------------------------

7、  例子代码

ArrayList:

 

package com.xinxin.testCollection;

 

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

 

public class ArrayListTest {

 

public static void main(String[] args) {

    

     FirstLevelTitle ft1 = new FirstLevelTitle(1,"待业","新新",new Date());

     FirstLevelTitle ft2 = new FirstLevelTitle(2,"就业","B",new Date());

     FirstLevelTitle ft3 = new FirstLevelTitle(3,"已就业","超哥",new Date());

    

     //List接口的实现类ArrayList

     List newsTitleList = new ArrayList();

     //向集合中添加元素

     newsTitleList.add(ft1);

     newsTitleList.add(ft2);

     newsTitleList.add(1,ft3);

    

     print(newsTitleList);

    

     //判断集合中是否存在指定的元素ft3

     if(newsTitleList.contains(ft3)){

         System.out.println("包括已就业");

     }else{

         System.out.println("不包括已就业");

     }

    

     System.out.println("删除前、新闻标题数目为:"+newsTitleList.size());

     //删除集合中的元素

     newsTitleList.remove(0);

     System.out.println("删除之后、新闻标题数目为:"+newsTitleList.size());

}

 

private static void print(List newsTitleList) {

    

     for(int i=0;i<newsTitleList.size();i++){

         FirstLevelTitle title = (FirstLevelTitle)newsTitleList.get(i);

         System.out.println(i+1+"/nID"+title.getId());

         System.out.print("名称:"+title.getTitleName());

         System.out.print("创建者:"+title.getCretor());

         System.out.print("创建时间::"+title.getCreateTime()+"/n");

        

     }

    

}

 

}

 

--------------------------------------------------------------------

 

FirstLevel:

 

package com.xinxin.testCollection;

 

import java.util.Date;

 

public class FirstLevelTitle {

 

private int id;             //id

private String titleName;   //名称

private String cretor;      //创建者

private Date createTime;    //创建时间

public FirstLevelTitle(int id,String titleName,String creator,Date createTime){

     this.id = id;

     this.titleName = titleName;

     this.cretor = creator;

     this.createTime = createTime;

}

 

public int getId() {

     return id;

}

 

public void setId(int id) {

     this.id = id;

}

 

public String getTitleName() {

     return titleName;

}

 

public void setTitleName(String titleName) {

     this.titleName = titleName;

}

 

public String getCretor() {

     return cretor;

}

 

public void setCretor(String cretor) {

     this.cretor = cretor;

}

 

public Date getCreateTime() {

     return createTime;

}

 

public void setCreateTime(Date createTime) {

     this.createTime = createTime;

}

 

}

 

 

LinkedList:

 

package com.xinxin.testCollection;

 

import java.util.Date;

import java.util.LinkedList;

 

public class LinkedListTest {

 

public static void main(String[] args) {

    

     FirstLevelTitle ft1 = new FirstLevelTitle(1,"失业","阿强",new Date());

     FirstLevelTitle ft2 = new FirstLevelTitle(2,"再次就业","麻子",new Date());

     FirstLevelTitle ft3 = new FirstLevelTitle(3,"已经就业","阿希",new Date());

     FirstLevelTitle ft4 = new FirstLevelTitle(3,"已经就业","阿峰",new Date());

    

     LinkedList newsTitleList = new LinkedList();

     newsTitleList.add(ft3);

     newsTitleList.add(ft4);

    

     //添加元素到集合中的首位

     newsTitleList.addFirst(ft1);

     //添加元素到集合中的某位

     newsTitleList.addLast(ft2);

    

     //获取第一条

     FirstLevelTitle first = (FirstLevelTitle)newsTitleList.getFirst();

     //获取最后一条

     FirstLevelTitle last = (FirstLevelTitle)newsTitleList.getLast();

    

     System.out.println("第一条的名称:"+first.getTitleName());

     System.out.println("最后一条的名称:"+last.getTitleName());

    

     //删除第一条

     newsTitleList.removeFirst();

     //删除最后一条

     newsTitleList.removeLast();

     System.out.println("还有"+newsTitleList.size()+"");

    

}

 

}

 

 

 

Student:

 

package com.xinxin.testCollection;

 

public class Student {

 

private String name;

private String school;

public Student(String name,String school){

     this.name = name;

     this.school = school;

}

//重写ObjexttoString()方法

public String toString(){

     return name+""+school+"";

}

}

 

 

Map:

 

package com.xinxin.testCollection;

 

import java.util.HashMap;

import java.util.Map;

 

public class MapTest {

 

public static void main(String[] args) {

    

     Student student1 = new Student("新新","哈佛");

     Student student2 = new Student("超哥","福地");

    

     Map students = new HashMap();

    

     //把英文名称与学员对象按照”键-值对“的方式存储在HashMap

     students.put("xinxin", student1);

     students.put("chaoge", student2);

    

     //分别打印键集、值集以及键=值对集合

     System.out.println("键集:"+students.keySet());

     System.out.println("值集:"+students.values());

     System.out.println("-值对集合::"+students);

    

     String key = "xinxin";

     //判断是否存在某个键,如果是,则根据键获取相应的值

     if(students.containsKey(key))

     {

         System.out.println(students.get(key));

     }

    

     //根据键删除某条记录

     students.remove(key);

     System.out.println("=值对集合:"+students);

    

}

 

}

 

 

创建一个类Queue,代表队列(特点:先进先出),添加add(Object obj)以及get()方法,添加main()方法进行效果验证。

 

import java.util.LinkedList;

 

public class Queue {

 

    private LinkedList list = new LinkedList();

    public void add(Object obj){

       list.addLast(obj);

       //list.addFirst(obj);

    }

    public Object get(){

       return list.removeFirst();

       //return list.removeLast();

    }

    public static void main(String[] args){

       Queue q = new Queue();

       q.add("first");

       q.add("last");

       System.out.println(q.get());

    }

}

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值