黑马训练营 ----------- List集合

 

----------------------------------- android培训java培训、期待与您交流! -----------------------------------

 

* 一 数组与集合都是存储对象的成员。集合中存储的是对象的引用(地址),
        集合框架:用于表示和操作集合所规定的统一的标准的体系结构。

        集合框架的三大结构:对外的接口 接口的实现和集合运算的算法

    接口:即表示集合的抽象数据类型,接口提供了让我们对集合里类容单独操作的可能,

    实现:就是集合框架中接口的具体实现,实际他们就是那些可以复用的数据接口

    算法:算法是可以复用的函数。

 

 

二 什么是集合:把相同的一类的东西汇聚成一个整体就叫集合,

  
  二 什么是集合框架
  集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。
 
  三 在集合框架的编译中会出项不安全的提醒,是在1.40版本后出现泛型所致,

  四 Iterator()迭代器
  迭代器就是集合取出元素的方式,他是以内部类的形式定义在集合中的。
  他的基本方法 hasNext(),next(),remove();a1.iterator()是否还可以迭代,返回类型为boolean。a1.retainAll(a2);//所判断的元素的位置也必须相同。
  *
  *
  * *五List 接口
  *
   |--List:元素是有序的,元素可以重复。因为该集合体系有索引。
    |--ArrayList:底层的数据结构动态数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
     排序特点:先进先出(队列)
   |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
   
   |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
     特有的获取元素的方式:emlements();
  *  1 特殊方法:可以对脚标进行操作的方法可以。
  *   
  2
  增
  add(index,element);
  addAll(index,Collection);
 
  删
  remove(index);
 
  改
  set(index,element);
  查(获取方式)
  get(index):
  subList(from,to);
  listIterator();
  int indexOf(obj):获取指定元素的位置。
  ListIterator listIterator();
  3
  List集合特有的迭代器ListIterator。ListIterator是Iterator的子接口。
  Iterator和ListIterator区别
  Iterator:只能够进行取出  判断  删除
  ListIterator:增加了修改 和添加
  
  4 Vector : 线程安全,速度慢,他的数组延长模式是100%100延长。特殊方法:枚举是他特殊的取出方法,elements()。
  其实枚举和迭代是一样的,只不过他的名称和方法名称都过长,
  *
  *  5:ArrayList: 创建时,默认情况下里面创建10个元素的长度的数组,当元素超过10以后会创建一个新的数组,
  * 这个数组的长度是比以前数组的长度增加了50%。然后再把以前数组的元素添加到这个新数组里面来,
  * 接着在把后面的元素添加到这个数组里面,
  *
  * 6 List和TreeSet相似的排序方式
  *
  * 六 练习
  将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
  比如:存人对象。同姓名同年龄,视为同一个人。为重复元素。
  思路:把这个容器里的数放入例外一个容器,放入每一个元素前先判断容器里面是否有相同的元素,有则不放。
 
  List集合判断元素是否相同,依据是元素的equals方法。
*/
 
 public static void main(String[] args) {
  
  ArrayList<Person> arrList = new ArrayList<Person>();
  
  arrList.add(new Person(10));
  arrList.add(new Person(10));
  arrList.add(new Person(10));
  arrList.add(new Person(20));
  System.out.println(arrList);
  System.out.println(arrList.remove(1));
  System.out.println(arrList);
  System.out.println(singleElement(arrList).size());
  
  
  //测试ListIterator
  ListIterator<Person> lit = arrList.listIterator();
  lit.add(new Person(10));
  System.out.println(arrList);
 }
 
 //创建一个去除一个ArrayList集合重复元素的方法,
 public static  List singleElement(List list){
  ArrayList<Person> newArrr = new ArrayList<Person>();
  
  Iterator<Person> it = list.iterator();
  while(it.hasNext()){
   Person p = it.next();
   if(!(newArrr.contains(p)))
    newArrr.add(p);
  }
  return newArrr;
 }
}
class Person{
 private int age;
 
 public Person(int age){
  this.age  = age;
 }

 @Override//为什么要重载equals方法,是因为容器判断一个元素是否存在用的是equals。
 public boolean equals(Object obj) {
  
  if(!(obj instanceof Person))
    return false;
  Person  other = (Person) obj;
  
  return this.age == other.age;
 }
}

 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值