集合框架1
来源:互联网 发布:数据库数据库系统 编辑:程序博客网 时间:2024/06/06 07:28
Collection 接口是集合框架中的顶级接口,用来保存单独的对象,它又有三个子接口。集合部分能更好 展示接口,子接口,抽 象类,具体类的层次结构。
Collection 接口是所有集合类的跟接口,同时 Collection 接口是一个泛型接口。
方法:
add(E e); 添加对象
Iterator iterator(); 生成迭代器对象,进而可以迭代集合中的元素
int size(); 获取集合中的元素数量
Collection 的子接口:
1)、List 有序的集合,元素有序存入。
2)、Set 无重复的集合,即存入的元素不重复。
3)、Queue 队列,JDK1.5版本新增接口,Queue 实现了“先进先出”(FIFO)的存储结构。Queue是Collection的子接口,具有所有集合的基本操作,除此之外,Queue还提供了一些新的插入、提取、查询等方法。
Collection 接口有两个主要的子接口,即List和Set,这二者存在一些区别。
①、List:
继承了 Collection 接口,并且扩展出属于自己的方法;List 集合中的元素都是与索引有关系的,因此 List 集合扩展的方法都是与索引有关系的。
例如: add(int index,E element) ; 在列表的指定位置插入指定元素。
②、List 是个接口,有三个常用的实现类:
ArrayList 数组列表,数据采用数组方式存储。 LinkedList 链表 Vector jdk1.0中的集合,实现了同步 List 是我们常用的集合类型,但是它是接口,不能实例化,需要使用 List 的实现类 ArrayList 才能使用。 1)、ArrayList ArrayList 被称为数组列表,数据采用数组的方式存储,使用连续内存存储。ArrayList 是 Java语言中可变长度数组的实现。 2)、LinkedList 称为链表,该集合类型实现了“链表”的数据结构。值得一提的是,LinkedList 不仅实现了 List 接 口,还实现了 Queue 接口,可以说链表同时也可以作为一个队列对象使用。使用方式与 ArrayList 类似。 3)、Vector Vector 是JDK1.0版本中的集合类,后来修改为实现了 List 接口。 Vector 的功能几乎都可以被 ArrayList 替代,主要区别是 Vector 是同步的,而 ArrayList 不是同步的。
③、ArrayList的常用方法
add(Object o); 向集合中添加数据
remove(Object o); 删除集合中的数据
add(int index, Object element); 给集合中某个索引位置添加一个数据
get(int index); 获取集合中某个位置的元素
泛型的使用:对象中只能持有相同类型对象,否则将发生编译错误。
例如:
public class User { private String userName //带参的构造器 public User(String userName) { super(); this.userName = userName; } //提供 get/set 方法 public String getUserName() { return userName; } public void setUserName(String userName){ this.userName = userName; } }
Test:
public class GenericsList { public static void main(String[] args) { //创建用户对象 User user=new User("张三"); User user1=new User("李四"); //创建集合对象,存放用户对象 List<User> userList=new ArrayList<User>(); userList.add(user); userList.add(user1); } }
④、LinkedList
LinkedList是以链表的方式存放的,每个节点上存放的是数据信息 常用方法:add(E element); 向链表末尾添加一个新的节点,该节点中的数据是参数 element 指定的对象。 add(int index, E element); 向链表的指定位置添加一个新的节点,该节点中的数据是参数 element 指定的对象。 扩展的方法:addFirst(E element); 向链表的头添加新节点,该节点中的数据是参数 element 指定的对象。 addLast(E element); 向链表的末尾添加新节点,该节点中的数据是参数 element 指定的对象。 LinkedList 的使用与 ArrayList 基本相同 例:
import java.util.LinkedList; import java.util.List; public class TestLinkedList { public static void main(String[] args) { //创建用户对象 User user=new User("王星"); /创建集合对象,存放用户对象 List<User> list=new LinkedList<User>(); list.add(user); } }
一、ArrayList和LinkedList的遍历:
①、for循环遍历:通过索引值获取所对应的数据信息
例如:
public class GenericsList { public static void main(String[] args) { //创建用户对象 User user=new User("张三"); User user1=new User("李四"); //创建集合对象,存放用户对象 List<User> userList=new ArrayList<User>(); userList.add(user); userList.add(user1); for(int i=0;i<userList.size();i++){ System.out.println(userList.get(i)); } } }
②、增强for循环的遍历:(做简单遍历读取,增强for循环确实减轻不少的代码量)也是通过迭代器的方法获取信息
例如:
public class GenericsList { public static void main(String[] args) { //创建用户对象 User user=new User("张三"); User user1=new User("李四"); //创建集合对象,存放用户对象 List<User> userList=new LinkedList<User>(); userList.add(user); userList.add(user1); for(User userInfo:userList){ System.out.println(userInfo); } } }
③、除了 for 循环,增强 for 循环外,还可以使用 Iterator 访问集合,尤其对 Map 来说,比较常用。
迭代器遍历(Iterator)--很少使用,通过集合返回迭代器。 Iterator接口 实际应用中,常常需要对集合元素进行迭代,Iterator 接口提供了迭代集合对象的功能,是一个泛型接口. 常用方法: hasNext(); 此方法用来判断被迭代的集合中是否存在元素。 next(); 返回集合中的当前元素. 迭代器访问 Collection 集合 Collection 对象都有返回 Iterator 的方法,因此都可以用迭代器来进行遍历。 List集合:
public static void main(String[] args) { //创建用户对象 User user1=new User("张三"); User user2=new User("李四"); //创建集合对象,存放用户对象 List<User> userList=new ArrayList<User>(); //List<User> userList=new LinkedList<User>(); userList.add(user1); userList.add(user2); Iterator<User> userIter=userList.iterator(); while(userIter.hasNext()){ User userInfo=userIter.next(); } }
Set集合:
public static void main(String[] args) { User user1=new User("qw"); User user2=new User("er"); User user3=new User("rw"); Set<User> userSet1=new HashSet<User>(); //Set<User> userSet1=new TreeSet<User>();//TreeSet中存储的对象必须实现Comparable接口 userSet1.add(user3); userSet1.add(user1); userSet1.add(user2); Iterator<User> it= userSet1.iterator(); while(it.hasNext()){ System.out.println(it.next().getUserName()); } }
- 集合框架专题1-集合框架概述
- 集合框架(1)
- 集合框架(1)
- 集合框架1
- java(1)--集合框架
- 集合框架1
- 集合框架 1~5
- 集合框架总结1
- 集合框架练习(1)
- 集合框架 1
- 集合框架 1
- 1、集合框架概述
- java集合框架(1、集合介绍)
- 集合框架1,数组集合ArrayList
- Java集合框架1-->List
- 黑马程序员-集合框架1
- 集合框架——1
- 集合框架知识点总结(1)
- spring 容器
- linux下2048小游戏
- linux内存管理(堆栈、数组)
- 浏览器兼容性
- SQLite使用
- 集合框架1
- MapReduce点滴
- 数据流基本问题--独立元素计数(二)
- Android使用ActionBar和ViewPager切换页面
- Android 性能优化(六)——资源文件的存放
- excel 导入文本数据乱码问题
- 冒泡排序法
- xml转json
- Cannot instantiate the type HttpClient问题