赞
踩
今天是寒假学JAVA第六天,主要学习了集合框架,希望大家认真学习。
数组存储的缺点
1、数组一旦初始化后,其长度和类型就确定了;
2、数组中提供的方法有限、对于增删改等操作不方便,效率也不高
3、能够解决有序、可重复,但对于无序和不可重复的需求时,不能够满足
发展演变
当需要在Java程序中记录单个数据内容时,则声明一个变量即可;
当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数组即可;
当需要在Java程序中记录多个类型不同的数据内容时,则创建一个对象即可;
当需要在Java程序中记录多个类型相同的对象数据时,则创建一个对象数组即可;
当需要在Java程序中记录多个类型不同的对象数据时,则准备一个集合即可;
Java中集合框架的顶层框架是:java.util.Collection集合和java.util.Map集合。其中Collection集合中存取元素的基本单位是:单个元素。其中Map集合中存取元素的基本单位是:单对元素。
常用方法
boolean add(E e) 添加对象
boolean contains(Object o) 判断是否包含指定对象
boolean remove (Object o) 从集合中删除对象
void clear(); 清空集合
int size(); 返回包含对象的个数
boolean isEmpty); 判断是否为空
Object[] toArray():- 将集合转换成数组 将数组转换成集合? Iterator iterator() -
遍历集合中的元素 Iterator对象称为选代器,主要用于遍历Collection集合中的元素 boolean
hasNext() 如果仍有元素可以迭代,则返回 true。
E.next() 返回迭代的下一个元素
注意:
for(要遍历的元素类型 遍历后自定义元素名称:要遍历的结构名称){ 返回迭代的下一个元素。
System.ou.println(遍历后自定义元素名称)}
练习代码如下:
public class CollectionTest { public static void main(String[] args) { //接口类型的引用指向实现的对象,形成多态 Collection c = new ArrayList(); System.out.println(c); boolean b = c.add("one"); System.out.println("b = " + b); c.add(2); c.add(3.14); c.add("吴波"); System.out.println(c); //判断是否包含对象 b = c.contains("two"); System.out.println("b = " + b); b = c.contains("one"); System.out.println("b = " + b); //判断集合是否为空 b = c.isEmpty(); System.out.println("b = " + b); System.out.println("集合中的元素有:" + c); b = c.remove("one"); System.out.println("b = " + b); System.out.println("集合中的元素有:" + c); System.out.println("================="); //将集合转换成数组 Object[] objects = c.toArray(); //遍历数组 for(int i = 0; i < objects.length; i++){ System.out.println(objects[i]); } //将数组转换成集合 List<Object> objects1 = Arrays.asList(objects); System.out.println(objects1); //迭代器遍历集合中的元素 Iterator it = objects1.iterator(); while(it.hasNext()){ //Object obj = it.next(); //System.out.println(obj); System.out.println(it.next()); } //增强for循环遍历 System.out.println("==========="); for(Object o:objects1){ System.out.println(o); } } }
基本概念
java.util.List集合是Collection集合的子集合,该集合中允许有重复的元素并且有先后放入次序。
该集合的主要实现类有:ArrayList类、LinkedList类、Stack类、Vector类。
其中ArrayList类的底层是采用动态数组进行数据管理的,支持下标访问,增删元素不方便。
其中LinkedList类的底层是采用双向链表进行数据管理的,访问不方便,增删元素方便。
其中Stack类的底层是采用动态数组进行数据管理的,该类主要用于描述一种具有后进先出特征的数据结构,叫做栈(last in first
out LIFO)。
其中Vector类的底层是采用动态数组进行数据管理的,该类与ArrayList类相比属于线程安全的类,效率比较低。
常用的方法
void add(int index,E element) 向集合中指定位置添加元素
boolean addAll(int index,Collectionc? extends> c) 向集合中添加所有元素
E get(int index) - 从集合中获取指定位置元素
E set(int index,E element)-
E remove(int index) - 删除指定位置的元素
List sublist(int fromIndex,int toIndex)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。