您的位置:首页 > 编程语言 > Java开发

java集合框架初学 ——List、Set、Map

2017-04-17 19:03 459 查看
List 的用法

package book;
import java.util.*;
public class Book {
public static void  main(Strng[] args){
//用list的常用操作写书类
//创建一个集合实例
List bookMessage = new ArrayList();
//创建成员
String title1 = "书名:《海贼王》\t"+"价格:"+"¥"+10+"\t"+"页数:"+100;//书名
String title2 = "书名:《七龙珠》\t"+"价格:"+"¥"+9+"\t"+"页数:"+80;;
String title3 = "书名:《死神》\t"+"价格:"+"¥"+8+"\t"+"页数:"+90;;

bookMessage.add(title1);
bookMessage.add(title2);
bookMessage.add(title3);
//遍历数组,Java的特有方法
System.out.println("\n");
int k = bookMessage.size()/2;
System.out.print("新店开张,目前只有"+k+"本书\n下面是书单");
for(Object i:bookMessage){//不管集合中的元素是什么类型的,
//都是用object代替
//这里的i是元素,不是下标
System.out.println(i);
}
}
}


一、对比Set和List(不同点)

1、List是以数组为模板,其优点是查找比较方便,缺点是插入删除比较累。而Set是以链表为模板的,优点就是插入删除比较方便,但是要是查找的话,得从链表的头部开始查。

2、List是有序的,而Set是无序的;

3、List的元素允许重复,而Set的元素不允许重复。

二、对比Set和List(相同点)

1、添加元素时,都是 add、撤销元素时都是 remove

2、遍历方式也相同

3、常见实现类都是 Hash 用法。

Set 的用法

package SetExe;

import java.util.Ha
4000
shSet;
import java.util.Set;

/**
* Created by 92407 on 2017/4/17.
*/
public class SetExe {
public static void main(String[] args) {
Set personName = new HashSet();
/**不推荐使用
*
*  HashSet personName = new HashSet();
*
*  的方法,虽然能编译
*  但大神们都是用的第一种方法
*
* */

personName.add("tingting");
personName.add("lili");
personName.add("juanjuan");

//遍历
Object[] os = personName.toArray();/**创建的  对象名.toArray*/
for(int i = 0;i<os.length;i++){
System.out.println(os[i]);

}

}

}


、、





三、Map

Map接口:

1、Map中的元素都是成对出现的,以键值对映射的形式存储和管理数据。

2、每个对象都有一个唯一的key值,每个key对应一个value ,通过key可以实现对value对象的访问。

3、key和value都为Object对象。

4、Key对象唯一不重复,value对象允许重复。

5、Map接口常用实现类:HashMap,Hashtable。





Map 的用法

package MapExe;

import java.util.HashMap;
import java.util.*;

/**
* Created by 92407 on 2017/4/17.
*/
public class MapExe {
public static void main(String[] args) {

//Map 是一个接口,而 HashMap 是一个对象实例 ,可以用来创建一个对象
HashMap personName = new HashMap();
/**不能使用 Map personName = new Map<>(); 的方法
* 因为 Map 是接口,是抽象的,不可被实例化
* */
/**
* Map 以接口的形象出现,其都是成对出现的,
* 以 # 键值 对 映射 的形式存储和管理数据的
* 每一个对象都有其唯一的 key 值
* 而每一个 key 值,都有唯一一个 value 与其对应
* 既 对象——>key——>value
* */
personName.put(1,"zhao");
personName.put(2,"qian");
personName.put(3,"qian");
personName.put(4,"sun");
personName.put(5,"li");
personName.put(6,"zhou");

//遍历 key 的值
Object[] keys = personName.keySet().toArray();//toArray 的意思是把它转化成字符串类型
for(int i = 0;i<keys.length;i++){
System.out.println("Key: "+keys[i]);
}
System.out.println();

//遍历  value 的值
Object[] values = personName.values().toArray();
for(int i = 0;i<values.length;i++){
System.out.println("value: "+values[i]);
}
System.out.println();

//遍历所有映射
Object[] entrys = personName.entrySet().toArray();
for(int i = 0;i<entrys.length;i++){
Map.Entry entry = (Map.Entry)entrys[i];
System.out.println(entry.getKey()+":"+entry.getValue());
}
System.out.println();
}
}


Map 是编号和实例同时访问的一种表,比较方便

Map的遍历方法如下:

遍历所有的key值

Object[]  keys = map.keySet().toArray();
for(int i=0;i<keys.length;i++){
System.out.println("key: "+keys[i]);


遍历所有的value值

Object[] values = map.values().toArray();
for(int i=0; i<values.length; i++){
System.out.println("value: "+values[i]);
}


遍历所有的entry值

//entry的遍历比较特殊
Object[] entrys = map.entrySet().toArray();
for(int i=0;i<entrys.length;i++){
Map.Entry entry = (Map.Entry)entrys[i];
/**上面的这个entrys已经被定义为Object类型,是所有类的父类,所以在创建实例时,不能直接创建:(子类的对象可以赋值给父类,而父类的对象不能赋值给子类,要是非要赋值,那就强制转换),这儿所加上的(Map.Entry就是强行转换)*/
System.out.println(entry.getKey()+“ : "+entry.getValue());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: