Java-集合

  1. java中的集合

  集合看作一宗容器,保存一组元素;

  对比数组:

    1,数组使用时必须指定长度;

    2,长度一旦指定,就不能更改

    示例:

      Person[] pers = new Person[3];

 

    集合示例:

    

List list = new ArrayLsit();

list.add(new Person());
list.add(new Person());
list.add(new Person());

  面向对象都是对象的形式体现,为了方便对对象的存储,数组对对象的存储就出现了弊端,这时候集合就完美的解决了这个问题,(集合就是在数组的基础上进行了封装提供了好用快捷的方法实现了动态把多个对象放引入到集合中)

 

集合的框架体系:

    |----Collection

      |----List    (可以保存可重复的元素;可以保证插入取出元素顺序的一致性)

        |----ArrayList

        |----LinkedList

        |----Vector

      |----Set  (不可以保存重复元素;不可以保证插入取出顺序的一致性)

        |----HashSet

        |----TreeSet

    |----Map

        |----HashMap

        |----HashTable

        |----TreeMap

        |----Properties

 collection接口的特点和使用:

  里面保存了一组对象,有的可以重复,有的不可以重复。有的是有序的,有的是无序的。

  没有提供直接的实现类,而提供了子接口  List 和 set

常见的方法:

Boolean  add(E,O);添加方法,向集合中添加对象元素
Boolean remove(Object,o);删除集合中的对象元素
Boolean contains(Object,o);查找集合中的对象元素
Boolean addAll(collecton c);批量向集合对象中添加元素
int

size();获取实际元素个数

Boolean

removeAll(conllection c);批量删除集合中的元素

Boolean

isEmpty();判断集合是否为空,如果为空返回true,否则返回false

 

 

 

 

 

 

 

 

 

 

 

 迭代器iterator遍历集合元素:

  工作原理和特点:

  1. 当调用iterator遍历集合元素的时候,默认指向集合的最上方;
  2. 每次调用next()方法进行下移,并且不能下移;
  3. 一般使用迭代器可以进行读取操作,不能进行删除,若要删除可以使用迭代器本身的方法【remove()方法】;增加不可以,修改只能修改对象的属性,不能修改内存地址;
    ×   不能增加
    √   自能使用迭代器自带的remove方法删除
    √   只能修改元素对象的属性,地址不能修改
    √    

 

 

  调用next()方法之前会调用hasnext()方法判断下一个元素是否存在,如果有下一个元素返回true,没有则返回false; 

  

 1 public static void main(String[] args) {
 2         Collection col = new ArrayList();
 3         col.add(new Book("西游记", 12.0, "吴承恩"));
 4         col.add(new Book("水浒", 12.0, "施耐庵"));
 5         col.add(new Book("三国", 12.0, "罗贯中"));
 6         col.add(new Book("红楼梦", 12.0, "曹雪芹"));
 7         //col.add(new Book("西游记", 12.0, "吴承恩"));
 8         
 9         Iterator iterator = col.iterator();
10         
11         while(iterator.hasNext()) {
12             Object next = iterator.next();
13             System.out.println(next);
14         }
15         
16     }

 


boolean hasnext();判断下一个对象元素是否存在,存在返回true,不存在返回false。
E next();下一个
default void remove();删除元素对象

 

 

 


 

方式二:使用增强for循环遍历

  增强for循环时JDK1.5推出的用来代替iterator迭代器的,主要用于遍历集合和数组,其简化了iterator,但其实本质也是iterator;

  因为foreach循环迭代的本质是iterator,所以符合迭代器的特性;如上所示;(迭代过程中的删除建议使用iterator);

 

LIst接口

特点

  1.有序(插入和读取的顺序一致)因为支持索引,索引从0开始;

  2.允许重复元素;

常见方法

add(int index,Object element);在指定索引的位置处增加元素
remove(int index);根据集合下标索引删除对象元素
set(int index,Object element);根据对象索引修改集合元素
indexOf(Object element); 根据对象查找
获取 get(int index);根据索引获取对象元素

 

 

 

 

 1 @Test
 2     public void test1() {
 3         List list = new ArrayList();
 4         list.add(100);
 5         list.add(200);
 6         list.add(200);
 7         list.add(300);
 8         
 9         System.out.println(list);
10         list.remove(200);
11         System.out.println(list);
12     }
//会报下标越界错误;
/*
  因为add方法是重载的collection的add方法,传入100,200,300属于int类型,程序默认会找同等类型的方法【add(int,index)】
  
*/
使用list.remove(new Integer(200));


 

遍历方式

 

你可能感兴趣的:(Java-集合)