码迷,mamicode.com
首页 > 编程语言 > 详细

JAVASE学习笔记:第十二章 集合

时间:2015-06-20 13:11:10      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

因数组一旦创建长度就不能改变
集合(collection),将多个相同性质的元素汇聚成一个整体   所在java.util包
集合框架(collection framework)
一、List是一个有序的、可重复的子接口,ArrayList是实现list的一个子类
在集合当中只能存放引用数据类型,不能存放基本数据类型
ArrayList list=new ArrayList();
list.add(对象);
list.add(位置,对象);
list.get(2);//获取指定位置的元素,返回的数据类型是对象
list.contains(元素) //是否包含这个元素
list.size()   //元素的个数
list.remove(位置)  //移除元素,返回值是相对应位置的元素
二、泛型  JDK1.5之后的东西,主要是用来约束集合中元素的数据类型
ArrayList<String> list=new ArrayList<String>();
增加for循环,JDK1.5之后的东西
for(String s:list){
  System.out.println(s);
}
通过迭代器,while(it.hasnext()){ it.next();}

通过对象流写对象的过程:
因直接将对象写入流,追加读取会报错,所以必须借助ArrayList集合

1、判断文件中是否存在该对象集合,如果不存在则new()一个,如果存在则追加
2、创建list对象存储student对象元素
3、将list对象写入到data文件中
/**
 *通过对象流把list读取和写入到data文件中
 *2015-6-16
 *作者    常宝
 */

public class testsaveobj {
 public static void main(String[] args) {
  Student s=new Student();
  s.setAge("20");
  s.setName("ddd");
  s.setSex(2);
  testsaveobj t1=new testsaveobj();
  boolean b= t1.objwrite(s);
  System.out.println(b);
  ArrayList<Student> alist=t1.objread();
  System.out.println(alist.size());
  
  
  
 }
 //将存储student元素的list对象写入到data文件中
 public boolean objwrite(Student s){
  File  f=new File("d:\\data.txt");
  ArrayList<Student> list;
  if(f.length()==0){
   list=new ArrayList<Student>();
   list.add(s);
  }
  else{
    list=this.objread();
   list.add(s);
  }
  ObjectOutputStream objOut=null;
  try {
    objOut=new ObjectOutputStream(new FileOutputStream(f));
    objOut.writeObject(list);
    return true;
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally{
   try {
    objOut.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  return false;
  
  
 }
 //读取data文件里的list对象的student元素
 public ArrayList<Student>  objread(){
  File  f=new File("d:\\data.txt");
  ObjectInputStream objin=null;
  if(f.length()==0){
   System.out.println("文件无内容");
   
  }
  else{
   
   try {
    objin=new ObjectInputStream(new FileInputStream(f));
    ArrayList<Student> list=(ArrayList<Student>)objin.readObject();
    return list;
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   finally{
    try {
     objin.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
  return new ArrayList<Student>();
  
 }
}

三、HashSet 是无序的、无重复子类
因为没有位置,不能通过get获取指定元素值,只能进行增加,删除等操作
判断元素是否有重复值是调用hashcode进行比较是否重复值
只能通过迭代器进行遍历

四、HashMap<key,value>  通过key查找对应的value
没有迭代器
  HashMap<String,String>  map=new HashMap<String,String>();
   map.put("1","2");  返回的数据类型是旧值
   containskey  判断是否包含指定的键
   map.keyset();  返回set数据类型的集合
   containsvalue  判断是否包含值
   map.get(key); 根据键返回对应的值
   map.remove(key);根据键移除对应的值
   map.entrySet() ;返回 set<map<k,v>>

获取所有键,循环遍历所有键,根据键获取相应的值

一、Collections集合工具类
1、升序排列:Collectons.sort(list);
2、二分查找binarySearch:将一组数据排序并输出指定数据的位置 Collectons.binarySearch(list,value);
注意:自定义对象比较需要实现comparable比较接口,可进行重写升序或降序排列,eg :   return o.filed-b.filed
二、Arrays  数组工具类
1、排序sort
2、二分查找binarySearch
3、复制copyof   int [] arr1=Arrays.copyof(arr,新数组的长度);
4、范围复制copyofrange

JAVASE学习笔记:第十二章 集合

标签:

原文地址:http://blog.csdn.net/cb_fxb/article/details/46573077

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!