黑马程序员──集合框架
来源:互联网 发布:mac版spss 编辑:程序博客网 时间:2024/06/18 12:50
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
集合框架
集合的由来:
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多
个对象的操作,就对对象进行存储,集合就是存储对象最常用的一
种方式。
数组和集合的区别:
数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。
数组中可以存储基本数据类型,集合只能存储对象。
集合中存储的都是对象的引用(地址)
List接口中常用类:
ArrayList:数组结构 线程不安全,查询速度快。增删稍慢。
LinkedList:链表结构,增删速度快。查询稍慢
Vector: 数组结构 线程安全,但速度慢,已被ArrayList替代。
List:
特有方法。凡是可以操作角标的方法都是该体系特有的方法。
增
add(index,element);
addAll(index,Collection);
删
remove(index);
改
set(index,element);
查
get(index):
subList(from,to);
listIterator();
int indexOf(obj):获取指定元素的位置。
ListIterator listIterator();
取出List集合中元素的方式:
高级for循环
public class CollectionIterator {public static void main(String[] args) {ArrayList<String> al = new ArrayList<String>();//新建集合对象al.add("haha");al.add("haha2");//添加元素al.add("haha3"); Iterator<String> it = al.iterator();//获取迭代器while(it.hasNext())//判断是否有元素{System.out.println(it.next());//取出元素,但不能并发访问。}}}
LinkedList: 特有方法
class LinkedListDemo {public static void main(String[] args) {LinkedList link = new LinkedList();link.addLast("java01");link.addLast("java02");link.addLast("java03");link.addLast("java04");while(!link.isEmpty())//判断是否为空{sop(link.removeLast());//获取、删除元素。}}
Vector:特有取出方式-->枚举
class VectorDemo {public static void main(String[] args) {Vector v = new Vector();v.add("java01");v.add("java02");v.add("java03");v.add("java04");Enumeration en = v.elements();//获取枚举while(en.hasMoreElements())//判断下一个元素是否存在{System.out.println(en.nextElement());//取出下一个元素}}}
Set接口:
HashSet:哈希表数据结构
线程不安全,存取速度快。
通过hashCode 方法和equals方法来保证元素的唯一性。如果元素的HashCode值相
同,才会判断equals是否为true。如果元素的hashcode值不同,不会调用equals。
自定义类要重写hashCode 方法和equals方法
<span style="white-space:pre"></span>public int hashCode(){return name.hashCode()+age*37;}public boolean equals(Object obj){if(!(obj instanceof Person))return false;Person p = (Person)obj;return this.name.equals(p.name) && this.age == p.age;}
TreeSet: 二叉树数据结构
线程不安全,可以对Set集合中的元素进行排序。
通过compareTo或者compare方法中的来保证元素的唯一 性。元素是以二叉树的形式存放的。
TreeSet中存储的对象要具有比较性需要实现Comparable -->覆写 compareTo
或者自定义比较器:实现Comparator -->覆写 compare
当两者排序都存在时,以比较器为主。
class Person implements Comparable<Person>//实现Comparable接口{private String name;private int age;public Person(String name, int age) {super();this.name = name;this.age = age;}public int compareTo(Person p)//重写方法{int num = this.name.compareTo(p.name);if (num==0)return new Integer(this.age).compareTo(new Integer(p.age));return num;}
Comparator -->覆写 compare
自定义比较器。
class MyCom implements Comparator<Person>//实现Comparator{public int compare(Person p1,Person p2)//重写方法。{int num = p1.getName().compareTo(p2.getName());//判断主要条件。if(num==0)//主要条件相同时,判断次要条件。return new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));return num;}}
泛型:<>
特点:
提高了程序的安全性
将运行期遇到的问题转移到了编译期
省去了类型强转的麻烦
泛型类的出现优化了程序设计
特殊:静态方法不能引用类上的泛型。
<?>类型不确定时用通配符表示。
Map:
Map与Collection在集合框架中属并列存在
Map存储的是键值对,具有映射关系。
Map存储元素使用put方法,Collection使用add方法。
Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素。
Map集合中键要保证唯一性
Map集合常用类:
HashMap:底层是哈希表数据结构,线程不安全,速度快,允许存放null键,null值。
Hashtable:底层是哈希表数据结构 ,线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
TreeMap:底层是二叉树数据结构,对键进行排序,排序原理与TreeSet相同。
常用方法:
1,添加。
put(K key, V value) 如果出现添加时,出现相同的键。那么后添加的值会覆盖原有键对应值。
putAll(Map<? extends K,? extends V> m)
2,删除。
clear()
remove(Object key)
3,判断。
containsValue(Object value)
containsKey(Object key)
isEmpty()
4,获取。
get(Object key)
size()
values()
entrySet()
keySet()
重点方法演示:
entrySet()
keySet()
public class MapDemo {public static void main(String[] args) {TreeMap<String,String> tm = new TreeMap<String,String>();//建立集合tm.put("java01", "haha1");tm.put("java02", "haha2");tm.put("java03", "haha3");tm.put("java01", "haha1");tm.put("java02", "haha2");tm.put("java03", "haha3");Set<String> keyset = tm.keySet();//获取键Set集合Iterator<String> it =keyset.iterator();//迭代while(it.hasNext()){String key=it.next();String value= tm.get(key);System.out.println(key+":....:"+value);}Set<Map.Entry<String,String>> entryset = tm.entrySet();//Map.Entry<String,String>集合中的映射关系 就像夫妻的结婚证一样。for(Map.Entry<String,String> me :entryset)//高级for循环。{String key = me.getKey();String value = me.getValue();System.out.println(key+" entry "+value);}<span style="color:#ff0000;"></span>
集合框架工具类:
Collections: sortreverseOrder()
toArray 集合变数组
为了限定对元素的操作。不需要进行增删了。
Arrays :asList( ) 数组变成list集合
可以使用集合的思想和方法来操作数组中的元素。
注意:将数组变成集合,不可以使用集合的增删方法。
因为数组的长度是固定。
sort 折半查找
以上内容为本人笔记,仅供参考。
- 黑马程序员──集合框架
- 黑马程序员:集合框架
- 黑马程序员-集合框架
- 黑马程序员-集合框架
- 黑马程序员:集合框架
- 黑马程序员-----集合框架
- 黑马程序员: 集合框架
- 黑马程序员-集合框架
- 黑马程序员--集合框架
- 黑马程序员- 集合框架
- 黑马程序员-集合框架
- 黑马程序员--------集合框架
- 黑马程序员----集合框架
- 黑马程序员 集合框架
- 黑马程序员 集合框架
- 黑马程序员:集合框架
- 黑马程序员-集合框架
- 黑马程序员----------------------集合框架
- JavaScript以及Jquery动态添加多选框值以及获取数据的学习记录
- 【cocos2d-js官方文档】十六、create
- QT中给button设置函数
- 【cocos2d-js官方文档】十七、事件分发机制
- Android ImageView和TextView居中
- 黑马程序员──集合框架
- Apple Swift学习资料汇总
- python 函数-lambda 学习
- Android Studio 导入Github的开源项目
- 《C程序设计语言》书籍内容学习第二弹
- Struts2——Action(二)
- linearLayout下设置selector不起作用的解决方法
- Android 内存管理
- Microsoft Mole原理及常见问题整理