集合Collection
来源:互联网 发布:单桂敏淘宝哪个真的 编辑:程序博客网 时间:2024/06/05 01:16
集合
容器
java中存储一堆数据的存在,像一个箱子.
前面学过的容器有数组和StringBuffer StringBuilder
数组:同一类型的有序的,长度不可变的,可以存储基本数据类型也可以存储引用数据类型;
int[] arr = {1,2,3};//基本数据类型String[] arr ={"1","2","3"};//引用数据类型
StringBuffer :字符串缓冲区,线程安全的,长度可变的,常用于多线程中
StringBuilder: 线程不安全的,长度可变 ,,单线程
最终都是要转成String来进行操作
常见方法:添加: append(data);//data除了byte和sort类型 尾部追加删除: delete(int start, int end)//移除数据 包头不包尾 deleteCharAt(int index)//删除指定位置上的字符查询: length() indexOf(str),indexOf(str,index)//第一次出现的位置 lastIndexOf(str),lastIndexOf(str,index)//最后一次出现的位置修改: insert(index,data)//在指定位置插入数据 setCharAt(index,ch)//指定位置设置为字符ch replace(start,end,str)//替代 reverse()//反转
集合Collection
集合的特点: 长度可变,存储的是对象,不能是基本数据类型, 由于集合存储的数据结构不同分为List和Set接口Collection的常见方法: 增: boolean add(e);//增加一个元素 boolean addAll(collection);//增加一个集合中的所有元素 删: boolean remove(e) boolean removeAll(coll) boolean clear() 判断: boolean isEmpty() boolean contains(e) boolean containsAll(coll) 获取: int size(); Iterator<E> iterator();//获取迭代器 返回的是迭代器接口,由于集合的数据结构不同,每个集合都会有自己的迭代器的,再用迭代器迭代输出集合中的元素时,如果要修改元素,需要使用迭代器的方法.如果使用的是集合的方法进行操作的话,会出现并发修改异常ConcurrentModificationException():此处产生的原因就是因为集合再对元素修改的时候,迭代器iterator并不知道修改了 其他: 取交集 boolean retainAll(coll) 转为数组 toArray()
List
list是collection的子接口public interface final List<E> extends Collection<E>List是有序的,元素都有角标,元素是可重复的,null也可以,相对于collection 它有一些特殊的关于角标的方法 .add(index,e);addAll(index,coll)E get(index)//获取角标上的元素E remove(index)//返回的是被删除的对象E set(index,e)//修改指定位置上的元素 返回被修改的元素List subList(start ,end)//包头不包尾ListIterator<E> listIterator ;//list特有的迭代器 可以使用ListIterator 在迭代输出list的元素时:进行 添加 void add(e) 修改 void set(e)//用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。 删除 void remove()//移除 next 或 previous 返回的最后一个元素(可选操作)。
for(ListIterator li = list.listIterator(); li.hasNext();) { syso(li.next); li.add("我是新来的"); li.remove();//移除了li.next()的值 li.set("我代替了next的值"); }
逆向迭代输出list集合的所有元素 for(ListIterator li = list.listIterator(); li.hasPrevious();) { syso(li.previous()); }
List的子类
由于数据结构的不同 ,所以list有很多子类,但常用的有3个:
1.ArrayList 数组,有序,不同步,查询快
2.LinkedList 链表和数组,有序,不同步,对首尾进行操作,增删快
3.Vector 数组,有序,同步,效率低,差不多过时了
Arraylist与Vector 跟List的方法差不多
LinkedList 频繁的增删的时候用1.执行add remove操作时,因为ArrayList是数组实现,每添加一次,都会产生新的数组对象,效率比较低。LinkedList在执行add操作时,要比ArrayList性能高.2.在执行get操作时,ArrayList是数组实现,可以理解连续内在空间,所以性能比较高。 LinkedList是链表实现,每一个中都保存了前一个的地址,在取出时效率低。特有方法:addFirst() addLast()getFirst() getLast()removeFirst() removeLast()
Set
Set 元素不重复,无序
常用子类:
HashSet 哈希表实现 无序 为了保证数据的唯一性,在对自定义对象操作的时候,需要自定义对象重写hashCode()和equals() 当obj.hashCode()==obj2.hashCode() 才会进行equals()判断内容,只有当hashCode()和equals()都一致的时候才说对象是相等的,
TreeSet 二叉树实现 默认自然排序 使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法当自定义对象的时候,需要自定义对象实现Comparable,重写compareTo(obj) class Student implements Comparable {@Overridepublic int compareTo(Object o) { // TODO Auto-generated method stub //需要重写 return 0;}} 或者 根据构造函数TreeSet(Comparator<? super E> comparator) TreeSet set = new TreeSet(new MyComparator());class MyComparator implements Comparator {@Overridepublic int compare(Object o1, Object o2) { // TODO Auto-generated method stub //需要重写 return 0;}}
0 0
- 集合Collection
- 集合collection
- Collection集合
- Collection集合
- Collection集合
- 集合 Collection
- Collection集合
- Collection集合
- 集合Collection
- 集合collection
- Collection集合
- 集合Collection
- 集合(Collection)
- Collection集合:
- 集合 collection
- 集合Collection
- Collection集合
- Collection集合
- eclipse代码自动提示,eclipse设置代码自动提示
- 【CodeForces】675B - Restoring Painting(数学推导)
- 2016SDAU课程练习三1002
- C Tricks(四)—— 从数组中随机选择一个元素
- Android自助餐之EventBus框架
- 集合Collection
- 文件读取写入
- EAS KDTable 判断点击的是表头
- halcon图片格式和opencv的IPLimage格式的转换
- HDU 1520 Anniversary party 树形dp 入门
- Android中TextVIew一些属性
- 123sdfdsfdsfsdf
- 轻量web服务器开发日记09-日志文件的实现
- android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)