java集合框架03

来源:互联网 发布:光怪兽普利茨墨淘宝 编辑:程序博客网 时间:2024/06/05 00:41

Java集合框架图



今天给大家介绍一下map接口

1.map

特点:无序,以键值对的形式存放数据,键不能重复,值可以重复,键如果相同,值会覆盖

map.clear()清除所有元素map,containskey是否包含map,isEmpty是否为空map.keyset获得保留所有键的set集合


/**
 * map接口
 * @author King
 *
 */
public class Demo2 {
public static void main(String[] args) {
Map<String, String> map=new HashMap<String, String>();
map.put("zs", "张三");
map.put("ls", "李四");
map.put("ww", "王五");
map.put("zs", "张三三");

// System.out.println(map.size());

//变量map集合
//1.foreach
for(String key:map.keySet()){
System.out.println("key:"+key+"\t "+"value:"+map.get(key));
}

//2.如何快速的遍历map集合
for(Map.Entry<String, String> entry:map.entrySet()){
System.out.println(entry.getValue());
}
}
}


1.1 HashMap

HashMap 允许null值和null键. 它的优点是可以快速的帮我们查找对象,缺点是我们无法控制对象的顺序.

1.2  Hashtable

Hashtable 和 HashMap 的主要区别在于 Hashtable 是线程同步的, 除此之外, Hashtable 不允许有 Null 值和 Null 键.

1.3 TreeMap

TreeMap 的键是经过排序的, 排序之后形成一个树状结构, 这就是叫它 TreeMap 的原因. 因为它要排序, 所以加入它的键必须实现 Comparable 接口或在创建 TreeMap 时提供比较器(Comparator). 除此之外, 它还提供了一些按键检索的方法.


给大家介绍一下两个工具类,分别是Collections 和 Arrays 提供了静态的方法,一个用来操作集合,一个操作数组
例如:
/**
 * 两个工具类(Arrays 和 Collections)
 * @author king
 *
 */
public class Demo4 {
public static void main(String[] args) {
String name[]=new String[]{"zs","as","sj"};
// System.out.println(name);

System.out.println(Arrays.toString(name));

System.out.println("***********************");
List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(3);
list.add(5);
list.add(2);
Collections.sort(list);//升序
Collections.reverse(list);//倒序
System.out.println(list);
}
}



公司面试有可能会问到集合框架中的一些问题

1.ArrayList和LinkedList的区别

ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中
所以最大的缺点就是插入删除时非常麻烦

LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 
但是缺点就是查找非常麻烦 要丛第一个索引开始

2.使用LinkedList实现堆栈(队列)
答案在我的博客:集合框架02中就有

3.ArrayList和Vector的区别
ArrayList和Vector功能类似。整体上ArrayList是Vector的“裸奔新版”Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。所以Vector在JavaME、Card等各种微小版本都可以使用,而ArrayList不能
ArrayList不具备线程同步的安全性,但速度较快,所以叫裸奔。Vector具备线程安全。

4.如何快速的遍历map集合
直接遍历map.Entry即可(map中的一个静态内部类
public static void main(String[] args) {
Map<Integer, String> map=new TreeMap<Integer, String>();
map.put(11, "张三");
map.put(22, "李四");
map.put(33, "王五");
map.put(11, "张三三");

for(Map.Entry<Integer, String> entry:map.entrySet()){
System.out.println("key:"+entry.getKey()+"\t"+"value:"+entry.getValue());
}
}


5.HashMap和HashTable的区别

HashMap:不是多线程安全,允许null作为键和值

HashTable:是同步的,可以在多线程使用,null不可以作为键和值


6.什么是同步? 线程的安全性就是同步,否则反正。不同步的运行速度比同步快,因为有锁的机制存在

7.什么又是同步线程?就是多个线程操作同一个对象时,如果一个线程先进来,为了不让其他线程干扰其工作,所有在先来的线程没有工作完之前,让其他的线程处于等待状态,等先来的线程处理完,再让其他线程进来(注意:同步线程是操作同一对象才用到)


---------------------------------------微笑敬请期待下一节哦!

原创粉丝点击