javaSE学习笔记之集合
2015-07-06 20:14
579 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
JDK提供所提供的集合在java.utilbao包内,其主要结构如下:
![](http://img.blog.csdn.net/20150706201408144?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式
Set中的数据对象没有顺序且不可以重复,常用的Set集合有HashSet
List中的数据对象有顺序且可以重复,常用List集合有LinkedList、ArrayList
关于 ArrayList 与 LinkedList 的比较分析
a) ArrayList 底层采用数组实现,LinkedList 底层采用双向链表实现。
b) 当执行插入或者删除操作时,采用LinkedList 比较好。
c) 当执行搜索操作时,采用 ArrayList 比较好
Map接口定义了存储“键(key)—值(value)映射对”的方法,常用的Map集合有HashMap
迭代器:Iterator
所有Collection接口的集合类都有一个iterator方法用于返回一个Iterator接口的对象
Iterator对象称作迭代器,用以方便的实现对集合元素的遍历操作
Iterator接口定义了如下方法:
boolean hasNext() //判断游标右边是否有元素
Object next()//返回游标右边的元素并将游标移动到下一个位置
void remove()删除游标左边的元素,在执行完next后该操作只能执行一次
Map集合进行迭代方式
keySet
entrySet
比较器:
1. TreeSet和TreeMap都按排序顺序存储元素,这些类通过使用被Java称之为“自然顺序”的顺序存储它们的元素。然而,精确定义采用何种“排序顺序”的是比较函数。
2.如果需要用不同的方法对元素进行排序,可以在构造集合或映射时,指定一个Comparator对象。
Comparator接口定义了两个方法:compare( )和equals( )。这里给出的compare( )方法按顺序比较了两个元素:
• int compare(Object obj1, Object obj2)obj1和obj2是被比较的两个对象。当两个对象相等时,该方法返回0;当obj1大于obj2时,返回一个正值;否则,返回一个负值。如果用于比较的对象的类型不兼容的话,该方法引发一个ClassCastException异常。通过覆盖compare( ),可以改变对象排序的方式。
JDK提供所提供的集合在java.utilbao包内,其主要结构如下:
Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式
public class CollectionsTest { public static void main(String[] args) { LinkedList list = new LinkedList(); list.add(new Integer(-8)); list.add(new Integer(20)); list.add(new Integer(-20)); list.add(new Integer(8)); Comparator r = Collections.reverseOrder(); Collections.sort(list, r); for(Iterator iter = list.iterator(); iter.hasNext();) { System.out.println(iter.next() + " "); } System.out.println(); Collections.shuffle(list); for(Iterator iter = list.iterator(); iter.hasNext();) { System.out.println(iter.next() + " "); } System.out.println("minimum value: " + Collections.min(list)); System.out.println("maximum value: " + Collections.max(list)); } }
Set中的数据对象没有顺序且不可以重复,常用的Set集合有HashSet
public class SetTest1 { public static void main(String[] args) { HashSet set = new HashSet(); System.out.println(set.add("a")); set.add("b"); set.add("c"); set.add("d"); System.out.println(set.add("a")); System.out.println(set); } }
List中的数据对象有顺序且可以重复,常用List集合有LinkedList、ArrayList
关于 ArrayList 与 LinkedList 的比较分析
a) ArrayList 底层采用数组实现,LinkedList 底层采用双向链表实现。
b) 当执行插入或者删除操作时,采用LinkedList 比较好。
c) 当执行搜索操作时,采用 ArrayList 比较好
public class LinkedListTest1 { public static void main(String[] args) { LinkedList list = new LinkedList(); list.add("F"); list.add("B"); list.add("D"); list.add("E"); list.add("C"); list.addLast("Z"); list.addFirst("A"); list.add(1, "A2"); System.out.println("最初的集合:" + list); list.remove("F"); list.remove(2); System.out.println("变化之后的集合:" + list); Object value = list.get(2); list.set(2, (String)value + "changed"); System.out.println("最后的集合:" + list); } }
Map接口定义了存储“键(key)—值(value)映射对”的方法,常用的Map集合有HashMap
public class MapTest1 { public static void main(String[] args) { HashMap map = new HashMap(); map.put("a", "zhangsan"); map.put("b", "lisi"); map.put("c", "wangwu"); map.put("a", "zhaoliu"); //System.out.println(map); String value = (String)map.get("b"); System.out.println(value); System.out.println("--------------"); String value2 = (String)map.get("d"); System.out.println(value2);
迭代器:Iterator
所有Collection接口的集合类都有一个iterator方法用于返回一个Iterator接口的对象
Iterator对象称作迭代器,用以方便的实现对集合元素的遍历操作
Iterator接口定义了如下方法:
boolean hasNext() //判断游标右边是否有元素
Object next()//返回游标右边的元素并将游标移动到下一个位置
void remove()删除游标左边的元素,在执行完next后该操作只能执行一次
public class InteratorTest { public static void main(String[] args) { HashSet set = new HashSet(); set.add("a"); set.add("b"); set.add("c"); set.add("d"); set.add("e"); // Iterator iter = set.iterator(); // // while(iter.hasNext()) // { // String value = (String)iter.next(); // System.out.println(value); // } for(Iterator iter = set.iterator(); iter.hasNext(); ) { String value = (String)iter.next(); System.out.println(value); }
Map集合进行迭代方式
keySet
public class MapTest4 { public static void main(String[] args) { HashMap map = new HashMap(); for(int i = 0; i < args.length; i++) { if(map.get(args[i]) == null) { map.put(args[i], new Integer(1)); } else { Integer in = (Integer)map.get(args[i]); in = new Integer(in.intValue() + 1); map.put(args[i], in); } } Set set = map.keySet(); for(Iterator iter = set.iterator(); iter.hasNext();) { String key = (String)iter.next(); Integer value = (Integer)map.get(key); System.out.println(key + " : " + value); }
entrySet
public class MapTest5 { public static void main(String[] args) { HashMap map = new HashMap(); map.put("a", "aa"); map.put("b", "bb"); map.put("c", "cc"); map.put("d", "dd"); Set set = map.entrySet(); for(Iterator iter = set.iterator(); iter.hasNext();) { Map.Entry entry = (Map.Entry)iter.next(); String key = (String)entry.getKey(); String value = (String)entry.getValue(); System.out.println(key + " : " + value); }
比较器:
1. TreeSet和TreeMap都按排序顺序存储元素,这些类通过使用被Java称之为“自然顺序”的顺序存储它们的元素。然而,精确定义采用何种“排序顺序”的是比较函数。
public class TreeSetTest { public static void main(String[] args) { TreeSet set = new TreeSet(); set.add("C"); set.add("A"); set.add("B"); set.add("E"); set.add("F"); set.add("D"); System.out.println(set); } }
2.如果需要用不同的方法对元素进行排序,可以在构造集合或映射时,指定一个Comparator对象。
Comparator接口定义了两个方法:compare( )和equals( )。这里给出的compare( )方法按顺序比较了两个元素:
• int compare(Object obj1, Object obj2)obj1和obj2是被比较的两个对象。当两个对象相等时,该方法返回0;当obj1大于obj2时,返回一个正值;否则,返回一个负值。如果用于比较的对象的类型不兼容的话,该方法引发一个ClassCastException异常。通过覆盖compare( ),可以改变对象排序的方式。
public class ComparatorTest { public static void main(String[] args) { TreeSet set = new TreeSet(new PersonComparator()); Person p1 = new Person(10); Person p2 = new Person(20); Person p3 = new Person(30); Person p4 = new Person(40); set.add(p1); set.add(p2); set.add(p3); set.add(p4); for(Iterator iter = set.iterator(); iter.hasNext();) { Person p = (Person)iter.next(); System.out.println(p.score); } } } class Person { int score; public Person(int score) { this.score = score; } public String toString() { return String.valueOf(this.score); } } class PersonComparator implements Comparator { public int compare(Object arg0, Object arg1) { Person p1 = (Person) arg0; Person p2 = (Person) arg1; return p2.score - p1.score; } }
相关文章推荐
- 详解Spring MVC 4常用的那些注解
- 第0周-JAVA云课堂学习日志
- java问题查找------从源头查找
- Java Spring的IoC和AOP的知识点速记
- java常用内存设置
- Java中只有按值传递,没有按引用传递!
- 欢迎使用CSDN-markdown编辑器
- LeetCode100 SameTree java题解
- Compare Version Numbers
- LeetCode101 SynmetricTree Java题解
- java该HashTable,HashMap和HashSet
- java中堆栈
- Maven_eclipse问题汇总
- Java知多少(完结)
- Eclipseproject标准的文件夹层次
- java 中构建可执行 jar 包的几种方式
- Spring中Hibernate配置笔记
- JavaWeb知识点总结一
- 黑马day14 监听器之javaBean对象的活化和钝化
- 赚钱买房(java大数+逆元+等比数列求和+快速幂)