黑马程序员技术交流社区

标题: JAVA总结之 集合框架(黑马考试) [打印本页]

作者: 狂飙的yellow.co    时间: 2013-6-1 15:31
标题: JAVA总结之 集合框架(黑马考试)
其中看到了这么大的框架,千万不要被吓到了,其实都是很有特点的Collection list 有序(存储的数据顺序一致),元素都有索引(元素可以重复)set 元素不可以重复,无序List Vector :内部是数组结构,是同步的ArrayList: 内部是数组结构,不是同步的,代替了Vector,查询数据比较的快,但是增删比较的慢LinckedList :内部是链表结构,不是同步的数据的增删比较的快,但是添加比较的慢SetHashSet(无顺序)HashSet 结构式哈希表,存储元素的时候使用的元素的hashcode方法来判断位置,如果位子相同,就会调用equals 方法比较元素的时候一般要复写hashCodeequals 方法LinkedHashSet 有顺序TreeSet可以对元素进行排序,是不同步的判断元素的唯一的方式是根据比较的结果判断是0(相同元素),还是不是0(不是相同元素);比较元素排序的方法1让元素自身有比较功能,那么要实现Comparable借口,覆盖comparable中的方法比较排序方法2让集合自身定义比较功能,定义一个列实现Comparable接口,覆盖其中的方法Map:添加一对元素,其中Map也被称为单列map中存储的是键值对,map中的键必须是唯一的HashTable:内部是Hash表同步的,不允许存在null键和null为值Propertise 用来键值对存配置文件的,和IO流结合HashMap:内不是Hash表,不是同步的,允许null为键,null为值TreeMap:内部是二叉树,不是同步的,可以对Map集合中的键进行排序如何取出Map中的元素方法1.通过keySet()方法获取所有的键所在的Set集合,然后迭代每一个键,来获取元素方法2.通过获取键值对的关系。
  1. package MAPStudy;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Set;

  6. public class GetMapDemo {

  7.         /**
  8.          * @param args
  9.          */
  10.         public static void main(String[] args) {
  11.                 // TODO Auto-generated method stub
  12.                 //实例化对象
  13.                 HashMap<String,Integer>  hash = new HashMap<String,Integer>();
  14.                 //添加数据
  15.                 hash.put("yellowcong", 18);
  16.                 hash.put("黑马", 100);
  17.                 hash.put("Steve Jobs", 56);
  18.                
  19. //                getMap(hash);//调用方法一
  20.                
  21.                 getMap_2(hash);//第二种方法
  22.                
  23.                
  24.         }

  25.         private static void getMap_2(HashMap<String, Integer> hash) {
  26.                 Set<Map.Entry<String,Integer>> set = hash.entrySet();
  27.                
  28.                 Iterator<Map.Entry<String,Integer>> it = set.iterator();
  29.                
  30.                 while(it.hasNext()){
  31.                         Map.Entry<String, Integer> entry = it.next(); // 迭代获取关系
  32.                         String key = entry.getKey();//获取键
  33.                         int value = entry.getValue();//获取值
  34.                        
  35.                        
  36.                         System.out.println(key+":"+value);
  37.                 }
  38.         }

  39.         //第一种方法,通过获取键的集合
  40.         public static void getMap(HashMap<String, Integer> hash) {
  41.                 //获取Set集合
  42.                 Set set = hash.keySet();
  43.                
  44.                 //通过Iteraor
  45.                 Iterator<String> it =set.iterator();
  46.                
  47.                 while(it.hasNext()){
  48.                         String name = it.next();
  49.                         int age = hash.get(name);
  50.                        
  51.                         System.out.println(name+":"+age);
  52.                 }
  53.         }

  54. }
复制代码
Iterator ListIterator 的区别
  1. package MAPStudy;

  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.ListIterator;

  5. public class List_Iterator {

  6.         /**
  7.          * 其中,我们通过一个例子来学习ListIterator 和 Iterator
  8.          * @param args
  9.          */
  10.         public static void main(String[] args) {
  11.                 // TODO Auto-generated method stub
  12.                 //其中实力化ArrayList这个类
  13.                 ArrayList<String> arr = new ArrayList<String>();
  14.                
  15.                 //在集合中添加数据,其中集合中的方法无非就是增删改查
  16.                 //add remove set get
  17.                 arr.add("狂飙的");
  18.                 arr.add("yellowcong");
  19.                 arr.add("我是黑马");


  20.                 System.out.println(arr);
  21.                
  22.                 //test_Iterator(arr);//其中这个是Iterator会出现错误
  23.                
  24.                 test_ListIterator(arr);
  25.                
  26.         }
  27.        
  28.         /*
  29.          * java.util.ConcurrentModificationException
  30.          * 其中这个会出现问题,因为在迭代器中不能操作元素,不然会发生异常
  31.          * 但是用ListIterator 可以解决这个问题
  32.          */
  33.         public static void test_Iterator(ArrayList<String> arr){
  34.                 Iterator<String> it = arr.iterator(); // 获取迭代器
  35.                
  36.                 while(it.hasNext()){
  37.                         Object obj = it.next(); //其中 it.next返回的数据都是Object(上帝),需要向下转型
  38.                         if(obj.equals("我是黑马")){
  39.                                 arr.add(1, "yellowcong是黑马");
  40.                         }
  41.                 }
  42.                 //将集合打印
  43.                 System.out.println(arr);
  44.         }
  45.        
  46.         //使用ListIterator
  47.         public static void test_ListIterator(ArrayList<String> arr){
  48.                 ListIterator<String>  it = arr.listIterator();
  49.                 while(it.hasNext()){
  50.                         Object obj = it.next();
  51.                         if(obj.equals("我是黑马")){
  52.                                 it.set("yellowcong是黑马");
  53.                         }
  54.                 }
  55.                 //将集合打印
  56.                 System.out.println(arr);
  57.         }
  58. }
复制代码
迭代器和高级For1.for循环:主要是用于循环次数确定的循环.还可以用于循环输出数组里的每个元素
2.iterator迭代主要用于循环输出一个集合中的每个元素
  1. package MAPStudy;

  2. import java.util.ArrayList;
  3. import java.util.Iterator;

  4. public class Itrator_FOR {

  5.         /**
  6.          * @param args
  7.          */
  8.         public static void main(String[] args) {
  9.                 // TODO Auto-generated method stub
  10.                 ArrayList<String> arr = new ArrayList<String>();
  11.                
  12.                 arr.add("疯狂的");
  13.                 arr.add("yellow");
  14.                 arr.add("cong");
  15.                 arr.add("黑马");
  16.                
  17.                
  18.                 getArrayList_1(arr);//调用高级for
  19.                 getArrayList_2(arr);//调用Iterator
  20.                
  21.                
  22.         }

  23.         public static void getArrayList_2(ArrayList<String> arr) {
  24.                 // TODO Auto-generated method stub
  25.                 Iterator<String> it =arr.iterator();
  26.                 while(it.hasNext()){
  27.                         String name = it.next();
  28.                         System.out.println(name);
  29.                 }
  30.         }

  31.         public static void getArrayList_1(ArrayList<String> arr) {
  32.                 for(String name: arr){
  33.                         System.out.println(name);
  34.                 }
  35.         }

  36. }
复制代码


作者: 狂飙的yellow.co    时间: 2013-6-1 15:32
我去,再次被这破编辑器给坑了。。。。。。。。。。。。。。。。。。。。。。。。
作者: 狂飙的yellow.co    时间: 2013-6-1 15:32
老师。。。。。。。。。。。。。。。。。给我加点技术分吧。。。。。。折腾这个也不容易啊。。。。。。。。。。。。。。。。。。。。。。。。。。。
作者: 神之梦    时间: 2013-6-1 15:46
狂飙的yellow.co 发表于 2013-6-1 15:32
老师。。。。。。。。。。。。。。。。。给我加点技术分吧。。。。。。折腾这个也不容易啊。。。。。。。。 ...

这个可以有,会有人给你加分的
作者: 袁梦希    时间: 2013-6-1 16:09
技术分已给,淡定
作者: 狂飙的yellow.co    时间: 2013-6-1 16:17
本帖最后由 狂飙的yellow.co 于 2013-6-1 16:18 编辑
袁梦希 发表于 2013-6-1 16:09
技术分已给,淡定

资源分享] JAVA 总结之 UDP和TCP (黑马考试) 这篇呢。。。。。。。。。。。。。。
  1. JAVA 总结之 UDP和TCP (黑马考试)
  2. http://bbs.itheima.com/thread-53317-1-1.html
  3. (出处: 黑马程序员训练营论坛)
复制代码

作者: 袁梦希    时间: 2013-6-1 16:18
狂飙的yellow.co 发表于 2013-6-1 16:17
资源分享] JAVA 总结之 UDP和TCP (黑马考试) 这篇呢。。。。。。。。。。。。。。 ...

发链接就行
作者: 狂飙的yellow.co    时间: 2013-6-1 16:19
袁梦希 发表于 2013-6-1 16:18
发链接就行

http://bbs.itheima.com/thread-53317-1-1.html
作者: 狂飙的yellow.co    时间: 2013-6-1 16:20
终于成功的发出了一个链接了。。。。。。。。。。。。。。。太心碎了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2