java中的集合框架(1)

java中的集合框架(1)

集合--集中合并数据----文件夹是一个集合的表现【统一管理/处理数据】

框架--jdk提供操作类库

集合框架--jdk提供的对集中合并数据进行统一管理/处理的开发类库。

交由集合统一管理/处理的数据有两种表现形式:

  1. 单列数据【独立的一个数据--数字,字符串,....】例如:100 ,”hello”
  2. 键值对数据 【一个数据是由键和建对应的值组成】书的目录就是一种典型的键值对数据【标题:页码】

Jdk提供的处理单列数据的开发类库

      1.Collection接口是Jdk提供的处理单列数据的顶级接口。

      2.Collection接口的子接口List接口处理有顺序的单列数据。

           List接口可以有重复的数据元素,按照顺序区分。

                ArrayList类

                LinkedList类    

    3.Collection接口的子接口Set接口处理没有顺序的单列数据。

            Set接口不能有重复的数据元素,【重复的元素被视为同一个】

                HashSet类

                LinkedHashSet类

ArrayList类

  1. 处理有顺序的单列数据
  2. 保存数据的存储空间,会自动扩展【注意与数组的区别】
  3. 可以保存任意数据类型的数据  【注意与数组的区别】
  4. 数据存储结构是动态数组结构【优势:查询速度快  缺点:添加/删除速度慢】

所属包:java.util

构造方法:

ArrayList() 构造一个初始容量为十的空列表。

ArrayList(Collection c) 将实现Collection接口的集合类转换成ArrayList

ArrayList(int initialCapacity) 构造具有指定初始容量的空列表。

例如:

public static void main(String[] args) {

//ArrayList类的构造方法

//创建一个初始容量为10的空ArrayList集合对象

ArrayList  list1 = new ArrayList();

//将实现Collection接口的集合类转换成ArrayList

ArrayList  list2 = new ArrayList(list1);

//创建一个指定初始容量的空ArrayList集合对象

ArrayList  list3 = new  ArrayList(30);

//可以有接口回调方式创建集合对象

List  list4=new ArrayList();

}

实例方法

add(E e) 将指定的元素追加到此列表的末尾。

clear() 从列表中删除所有元素。

contains(Object o) 如果此列表包含指定的元素,则返回 true 。

get(int index) 返回此列表中指定位置的元素。

indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1

lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。

isEmpty() 如果此列表不包含元素,则返回 true 。

remove(int index) 删除该列表中指定位置的元素。

remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)。

set(int index, E element) 用指定的元素替换此列表中指定位置的元素。

size() 返回此列表中的元素数。

toArray()以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组

Iterator  iterator() 以正确的顺序返回该列表中的元素的迭代器接口。【遍历ArrayList中的数据元素】

例如:

//创建一个初始容量为10的空ArrayList集合对象

ArrayList  list1 = new ArrayList();

//add(E e) 将指定的元素追加到此列表的末尾。

list1.add("hello");

list1.add(100);

list1.add(true);

list1.add(12.5);

list1.add("hello");

//contains(Object o) 如果此列表包含指定的元素,则返回 true 。

System.out.println("contains==="+list1.contains("hello111"));

//get(int index) 返回此列表中指定位置的元素。

System.out.println("get(1)==="+list1.get(1));

//indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1

System.out.println("indexOf('hello') ==="+list1.indexOf("hello"));

//lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。

System.out.println("lastIndexOf('hello') ==="+list1.lastIndexOf("hello"));

//isEmpty() 如果此列表不包含元素,则返回 true 。

System.out.println("isEmpty() ==="+list1.isEmpty());

//remove(int index) 删除该列表中指定位置的元素。

//remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)。

System.out.println("remove() ==="+list1.remove("hello"));

//set(int index, E element) 用指定的元素替换此列表中指定位置的元素。

System.out.println("get(3)==="+list1.get(3));

list1.set(3,"world");

System.out.println("get(3)==="+list1.get(3));

//size() 返回此列表中的元素数。

System.out.println("size==="+list1.size());

ArrayList集合的遍历

1.//普通的for循环

for(int  i=0;i

System.out.println("普通的for循环遍历==="+list1.get(i));

}

2.//增强的for循环

for(Object obj:list1){

System.out.println("增强的for循环遍历==="+obj);

}

3.//迭代器遍历集合

//Iterator  iterator() 以正确的顺序返回该列表中的元素的迭代器接口。【遍历ArrayList中的数据元素】

Iterator  it= list1.iterator();

while(it.hasNext()){

Object  obj=it.next();

System.out.println("迭代器遍历集合==="+obj);

}

LinkedList类

1.处理有顺序的单列数据

2.保存数据的存储空间,会自动扩展【注意与数组的区别】

3.可以保存任意数据类型的数据  【注意与数组的区别】

4.数据存储结构是链表【火车】结构【优势:添加/删除速度快  缺点:查询速度慢】

构造方法:

LinkedList() 构造一个空列表。

LinkedList(Collection c) 将实现Collection接口的集合类转换成LinkedList

实例方法:

add(E e) 将指定的元素追加到此列表的末尾。

clear() 从列表中删除所有元素。

contains(Object o) 如果此列表包含指定的元素,则返回 true 。

get(int index) 返回此列表中指定位置的元素。

indexOf(Object o) 返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1

lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。

isEmpty() 如果此列表不包含元素,则返回 true 。

remove(int index) 删除该列表中指定位置的元素。

remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)。

set(int index, E element) 用指定的元素替换此列表中指定位置的元素。

size() 返回此列表中的元素数。

toArray()以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组

Iterator  iterator() 以正确的顺序返回该列表中的元素的迭代器接口。【遍历ArrayList中的数据元素】

LinkedList类提供了一组针对第一个元素和最后一个元素的操作方法:

addFirst(E e) 在该列表开头插入指定的元素。

addLast(E e) 将指定的元素追加到此列表的末尾

getFirst() 返回此列表中的第一个元素。

getLast() 返回此列表中的最后一个元素。

removeFirst() 从此列表中删除并返回第一个元素。

removeLast() 从此列表中删除并返回最后一个元素。

因为LinkedList类的数据存储结构是链表【火车】结构

HashSet类

  1. 处理的是没有顺序的单列数据【重复的元素算一个】
  2. 保存数据的存储空间,会自动扩展。
  3. 可以保存任意数据类型的数据。

构造方法:

HashSet() 构造一个新的空集合; 背景HashMap实例具有默认初始容量(16)和负载因子(0.75)。

HashSet(Collection c)将实现Collection 接口的集合类转换成HashSet

HashSet(int initialCapacity) 构造一个新的空集合; 背景HashMap实例具有指定的初始容量和默认负载因子(0.75)。

HashSet(int initialCapacity, float loadFactor) 构造一个新的空集合; 背景HashMap实例具有指定的初始容量和指定的负载因子

实例方法:

add(E e) 将指定的元素添加到此集合。

clear() 从此集合中删除所有元素。

contains(Object o) 如果此集合包含指定的元素,则返回 true 。

isEmpty() 如果此集合不包含元素,则返回 true 。

remove(Object o) 如果存在,则从该集合中删除指定的元素。

size() 返回此集合中的元素数。

iterator() 返回此集合中元素的迭代器。

例如:

public static void main(String[] args) {

//构造方法:

//HashSet() 构造一个新的空集合; 背景HashMap实例具有默认初始容量(16)和负载因子(0.75)。

    HashSet  set1= new HashSet();

//HashSet(Collection c)将实现Collection 接口的集合类转换成HashSet

ArrayList  list=new ArrayList();

HashSet  set2=new HashSet(list);

    //HashSet(int initialCapacity) 构造一个新的空集合; 背景HashMap实例具有指定的初始容量和默认负载因子(0.75)。

HashSet  set3= new HashSet(30);

//HashSet(int initialCapacity, float loadFactor) 构造一个新的空集合; 背景HashMap实例具有指定的初始容量和指定的负载因子

HashSet  set4= new HashSet(30,0.5f);

//实例方法:

//add(E e) 将指定的元素添加到此集合。

set1.add("hello");

set1.add(100);

set1.add(true);

set1.add(12.5);

set1.add("hello");

//size() 返回此集合中的元素数。

System.out.println("size()=="+set1.size());

//remove(Object o) 如果存在,则从该集合中删除指定的元素。

System.out.println("remove()=="+set1.remove("hello"));

System.out.println("size()=="+set1.size());

//clear() 从此集合中删除所有元素。

//isEmpty() 如果此集合不包含元素,则返回 true 。

//System.out.println("isEmpty()=="+set1.isEmpty());

//set1.clear();

//System.out.println("isEmpty()=="+set1.isEmpty());

//contains(Object o) 如果此集合包含指定的元素,则返回 true 。

//iterator() 返回此集合中元素的迭代器。

//遍历HashSet

//不能直接使用普通的for循环遍历,可以将HashSet集合转换ArrayList集合就可以使用普通的for循环遍历

ArrayList list1=new ArrayList(set1);

for(int  i=0;i

System.out.println("普通for循环遍历==="+list1.get(i));

}

//可以使用增强的for循环

for(Object obj:set1){

System.out.println("增强的for循环=="+obj);

}

//通过迭代器遍历

Iterator  it=set1.iterator();

while(it.hasNext()){

Object obj=it.next();

System.out.println("迭代器遍历=="+obj);

}

}

LinkedHashSet

定义结构:

public class LinkedHashSet

extends HashSet

implements Set,

LinkedHashSet是HashSet类的子类

只要会使用HashSet,那么就一定会使用LinkedHashSet。

构造方法:

LinkedHashSet() 构造一个新的空集合; 背景HashMap实例具有默认初始容量(16)和负载因子(0.75)。

LinkedHashSet(Collection c)将实现Collection 接口的集合类转换成LinkedHashSet

LinkedHashSet(int initialCapacity) 构造一个新的空集合; 背景HashMap实例具有指定的初始容量和默认负载因子(0.75)。

LinkedHashSet(int initialCapacity, float loadFactor) 构造一个新的空集合; 背景HashMap实例具有指定的初始容量和指定的

实例方法:

add(E e) 将指定的元素添加到此集合。

clear() 从此集合中删除所有元素。

contains(Object o) 如果此集合包含指定的元素,则返回 true 。

isEmpty() 如果此集合不包含元素,则返回 true 。

remove(Object o) 如果存在,则从该集合中删除指定的元素。

size() 返回此集合中的元素数。

iterator() 返回此集合中元素的迭代器。

作业:

  1. List接口与Set接口的区别?
  2. ArrayList类与LinkedList类的区别?

你可能感兴趣的:(Java学习)