Java util包下的集合类

Java util包下的集合类

1.集合概念

数组特点:1 定长
2 连续存储的(通过索引下标)
3 只能存储类型相同的数据
4 存储多个数据

集合特点:1 存储多个数据
2 存储的类型可以是多种
3 不一定是连续存储
4 非定长

2.常用的集合类之ArrayList

ArrayList 又称为动态数组,上级接口是List接口

特点:

1 非定长
2 连续存储的集合

构造方式:

// 构造方式
 List list1=new ArrayList();
      //可以存放任何类型的数据
 List<String> list2=new ArrayList<String>();
      //只能存放字符串类型的数据
 List<Integer> lists=new ArrayList<Integer>();
      //集合中的类型只能是引用数据类型

常用方法:

add方法:往集合中添加数据
get方法:从ArrayList集合中取出指定索引下标(从0开始)的数据
size方法:返回ArrayList集合的长度
clear方法:清空当前集合
remove方法:移除集合中指定下标的数据

遍历方法:

// 方法1 利用for i和get方法进行结合
for (int i = 0; i < list.size(); i++) {
 System.out.println("第"+i+"个集合元素的值是"+list.get(i));
	 }
// 方法2 增强迭代 不通过索引下标来访问
 for (Integer m : list) {
 System.out.println("元素的值是"+m);
		 }
// 方法3 通过迭代器迭代遍历
Iterator<Integer> it = list.iterator(); // 编写迭代器
while (it.hasNext()) {
System.out.println(it.next());

3.常用的集合类之LinkedList

LinkedList特点:

1 定长
2 连续存储
3 上级接口List

构造和常用方法基本上和ArrayList基本上一样。

LinkedList和ArrayList区别:

1 如果是往集合中频繁插入数据或者频繁删除某个下标位置的元素,尤其是插入到集合非最后一个元素的时候,那么LinkedList的效率比较高
2 如果是频繁的查询一个集合中的元素,ArrayList的效率比较高

4.常用的集合类之Vector

Vector特点:

1 定长
2 连续存储
3 上级接口List

构造和常用方法基本上和ArrayList基本上一样。

Vector,LinkedList和ArrayList区别:

1 如果是往集合中频繁插入数据或者频繁删除某个下标位置的元素,尤其是插入到集合非最后一个元素的时候,那么LinkedList的效率比较高
2 如果是频繁的查询一个集合中的元素,ArrayList的效率比较高
3 Vector是线程安全的,ArrayList和LinkedList是非线程安全的。Vector整体效率略低于后两者。

5.常用的集合类之HashMap

HashMap,以键值对(key-value)存储的一个集合,上级接口Map。

特点:

1 无序存储
2 key值不能重复,如果有重复,则后者value替换前者
3 非定长
4 存储的数据只能是引用数据类型

构造方法:

Map<String, Integer> scores=new  HashMap<String, Integer>();

常用方法:

put(key,value)

往集合中添加数据

Size方法

返回集合的长度

containsKey方法

传入一个key值判断集合中是否有对应的key值,
如果有返回true,没有返回false

Get方法

传入一个key值,返回对应value

遍历hashMap

HashMap hashMap = new HashMap();
hashMap.put("name", "张三");
hashMap.put("name1", "李四");
hashMap.put("name2", "王五");
System.out.println("HashMap的元素个数为:"+hashMap.size());

//遍历方法一:
//hashMap.entrySet()方法,通过迭代器Iterator进行遍历 效率高,推荐使用
Iterator iter1 = hashMap.entrySet().iterator();  
while(iter1.hasNext()){  
    Map.Entry name = (Map.Entry)iter1.next();  
    String nameKey = (String)name.getKey();  
    String nameValue = (String)name.getValue();  
    System.out.println(nameKey + "'s name is " + nameValue);
}
 
//遍历方法二:
//hashMap.keySet()方法,通过迭代器Iterator进行遍历 效率低,不推荐使用
Iterator iter2 = hashMap.keySet().iterator();
while (iter2.hasNext()) {
    Object key = iter.next();
    Object val = hashMap.get(key);
}
 
//遍历方法三:foreach方法来遍历keyset,和第二种没有什么区别
Set keySet = hashMap.keySet();
for(Object key: keySet) {
    System.out.print("[key=" + key + ",
    value=" + hashMap.get(key) + "]  ");
}
 
//遍历方法四:java8中新增方法forEach。
hashMap.forEach((key,value) -> {
    System.out.print("[key=" + key + ",value=" + value + "]  ");
});

内容均整理自老师上课笔记和网络
仅供个人复习

你可能感兴趣的:(Java,java)