概述
——- android培训、java培训、期待与您交流! ———-
Collection,set,list
Collection各元素之间没有指定的顺序,允许有重复元素和多个null元素
Set各元素之间没有指定的顺序,不允许有重复源素,最多允许有一个null元素对象
List各元素之间有指定的顺序,允许有重复的元素和多个null元素对象
List接口对collection进行了简单的扩充,它的具体实现类常用的有arrayList 和linkedList
你可以讲任何东西放到一个list容器中,并在需要时从中取出
arrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此他的随机访问速度极快,而LinkedList得内部实现是链表,它适合于在链表中间需要频繁进行插入和操作
在具体应用时可以根据需要自由选择,千亩按说的iterator只能对容器进行向前遍历,而listIterator则继承了iterator的思想,并提供了对list进行双线遍历的方法
Set几口也是collection的一种扩展。而与list不同的是,在set中的对象元素不能重复,也就是说你不能把同样的东西两次都放入同一个set中,它的常用具体实现有hashSet和treeset类
hashSet能快速定位一个元素,但是你放到hashset中的对象需要实现hashCode()方法,它使用了羡慕按说服哦的hash码算法,而treeset则将放入其中的元素按顺序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个使用类compatable和comparator
一个类是可排序的,它就应该事先comparable接口。优势多个类具有相同的排序算法,那就不需要在没分别重新定义相同的排序算法,只要实现conparator接口即可,结合框架中还有两个很是有你的公用类
Collections和arrays,cillections提供了对一个collection容器进行诸如排序、复制、查找和填充等一些非常有用的费那个发,arrays则是对一个数组进行类似的操作
Map是一种把键对象和值对象进行关联的容器,而且一个值对象又可以使一个map,以此类推,这样就可能新城一个多集英社,对于键对象来说,向set一样,一个map容器中的键对象不允许重复,这是为了保持超找结果的一致性,过有两个键对象一样,那你想得到那个键对象对应的之对象就有问题了,可能你得到的并不是你想的那个之对象,结果会造成混乱,所以键的唯一性很重要,这也是符合集合的性质。的那个然在使用过程中,某个键对象锁对应的之对象可能会发生变化,这是会按照最后一次修改的值对象与键对应。对于之对象没有唯一性的要求
你可以将多个键都映射到一个值对象上,这样不会发生任何问题(不过对你的使用却可能造成不便,你不知道你得到的到底是哪一个键所对应的值对象)。Map有两种比较常用的事项:Hashmap和treemap
Map也是用到了哈希码的算法,一遍快速查找一个键,treeMao则是对键按顺序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从treeMap中指定一个方位以取得其子map。键和值的关系很简单,用put方法即可将一个键与一个值独享相关联。用get()可能得到与此key对喜爱那个锁对应的值对象
- 容器的分类
1.1 collection:一组各自独立的元素,即其内部每个位置仅持有一个元素
1.2 list:以元素安插的次序来村饭位置元素,不会重新排列
1.3 set:不接受重复元素,它会使用自己内部的一个排列机制
1.4 map:一群成对的键值对象,即所有持有的是键值对
map中不允许有重复的key
1.Collection接口是List、Set、Queue接口的父接口。
public class CollectionTest {
public static void main(String[] args) {
Collection c = new ArrayList();
//添加元素
c.add("小明");
c.add(12);
//删除元素
c.remove(12);
System.out.println("集合中是否包含"小明"字符串"+c.contains("小明"))
Collection b = new HashSet();
b.add("小明");
//用c集合减去b集合的元素
c.removeAll(b);
//b集合只剩下c集合里也包含的元素
b.retainAll(c);
}
}
2.迭代器遍历集合
public class Test {
public static void main(String[] args) {
Array c = new ArrayList();
//添加元素
c.add("小明");
c.add("小王");
c.add("小张");
Iterator i = c.iterator();
while(i.hasNext()){
//返回的数据是object类型,需要强制类型转换
String name=(String)i.next();
//打印
System.out.println(name+"n");
//判断如果是小王,就删除
if(name.equals("小王")){
i.remove();
}
}
}
}
3.增强for循环遍历集合
public class Test {
public static void main(String[] args) {
Array c = new ArrayList();
//添加元素
c.add("小明");
c.add("小王");
c.add("小张");
// 元素类型 元素名:集合名
for(String name:c){
//打印
System.out.println(name+"n");
//判断如果是小王,就删除
if(name.equals("小王")){
i.remove();
}
}
}
}
——- android培训、java培训、期待与您交流! ———-
最后
以上就是俭朴心情为你收集整理的黑马程序员------学习笔记(6)集合的全部内容,希望文章能够帮你解决黑马程序员------学习笔记(6)集合所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复