使用集合存储对象
来源:互联网 发布:苹果mac截屏方法 编辑:程序博客网 时间:2024/06/03 21:31
1、 为什么需要集合框架。
如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象,可以考虑使用JAVA集合框架。
2、 JAVA集合框架由以下三部分组成。
2.1、接口
Collection是最基本的集合接口,一个Collection代表一组元素。
List接口继承自Collection,List是有序集合,充许有相同的元素,使用List能够精确地控制每个元素插入的位置,用户能够使用索引来访问List中的元素,类似于数组。
2.2、具体类
实现List的常用类有ArrayList和LinkedList。它们都可以容纳所有类型的对象,包括null,并且都保证元素的存储顺序。
ArrayList实现了可变大小的数组。它的优点在于遍历元素和随机访问元素的效率比较高。
LinkedList提供了额外的addFirst()、addLast()、removeFirst()、removeLast()等方法,可以在LinkedList的或尾部进行插入或者删除操作。LinkedList采用双向列表存储数据。相较于ArrayList,在插入或删除元素时,LinkedList提供更好的性能。这些方法使得LinkedList可以被用作堆栈(stack)或者队列(queue)。
HashMap是Map接口的实现类,实现一个键到值映射的哈希表。
2.3、JAVA集合框架提供了类Collections,它提供了对集合进行排序等多种算法实现。
3、List接口和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;
}
//重写Objext的toString()方法
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());
}
}
- 使用集合存储对象
- sharedpreference 如何存储集合对象
- redis存储对象和集合
- 集合框架--ArrayList集合存储自定义对象
- 使用ArrayList集合存储数据
- oracle存储过程,集合对象处理
- androidのSharedPreferences存储集合对象
- 集合中存储自定义对象源代码
- 黑马程序员_TreeSet集合存储自定义对象
- 集合框架(HashSet存储自定义对象)
- 集合框架-TreeSet存储自定义对象
- HashSet集合存储自定义对象及注意事项
- HashSet集合存储自定义对象细节
- 集合框架---TreeSet存储自定义对象
- 集合框架--HashSet存储自定义对象
- oracle存储过程,集合对象处理
- List集合存储学生对象并遍历
- 关于Litepal存储对象,集合的讨论
- 掌控CRM控制项目预算
- 13个改善EQ的方法《转载》
- strcpy与memcpy以及strncpy
- (二)旧日足迹
- JS代码:转向页面
- 使用集合存储对象
- PB5.0 features/sysgen参数和ceconfig.h中宏定义的对应关系
- Linux下的JDK环境配置
- 拥抱Zend Framework
- JS代码:复选框全选事件,选中行变色
- C# 遍历指定文件夹的所有文件 文件夹 (3句搞定!)
- JAVA运行时的堆内存设定
- LCA算法--并查集应用
- .NET正则基础之——平衡组