0
点赞
收藏
分享

微信扫一扫

集合框架(集合类)

代码敲到深夜 2022-04-16 阅读 123
java

在Java中可以通过数组保存多个对象,但某些情况下开发人员无法确定需要保存的数组长度,此时数组将不再适用,因为数组的长度是不变的。为了保存数目不确定的数据,JDK提供了一系列特殊的类,这些类可以存储任意类型的数据,并且长度可变,,在java中这些类统称为集合。集合类都位于java.util包中。

List列表特点

有序集合(也称为序列 )。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。可以简单的理解成和数组的使用方式差不多 , 存储到List中的数据有顺序的 并且可以通过索引编号对其进行操作

ArrayList集合底层体现出来的数据结构是数组。对此集合的操作其实还是对数组的操作。

Linkedlist集合底层体现出来的数据结构是链表。

ArrayList集合常用方法

LinkedList集合常用方法

 

 

 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,他有两个重要的子接口Set和List。


List特点是元素有序、可重复。 

在List集合中,允许出现重复元素,所有的元素都是以一种线性的方式进行存储的,在程序中可通过索引来访问集合中指定的元素,List集合另一特点是元素有序,即元素的存入顺序和取出顺序一致。主要实现类:ArrayList、LinkedList 。


Set特点元素无序、元素不可重复。主要实现类:HashSet、TreeSet.

Set接口中的元素是无序的,并且会以为某种规则保证存入的元素不重复。

HashSet 是 Set 接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的。当向 HashSet 集合中添加一个对象时,首先会调用该对象的 hashCode ()方法来计算对象的哈希值,从而确定元素的存储位置。如果此时哈希值相同,再调用对象的 equals ()方法来确保该位置没有重复元素。 Set 集合与 List 集合存取元素的方式都一样(存取关键字基本一致)。

Map:双列集合的根接口,用于存储具有键(key)、值(value)映射关系的元素,每个元素都包含一对键值,可以通过指定的键找到对应得值。
Map接口的主要实现类:HashMap、TreeMap。

ArrayList a1 = new ArrayList();
 a1.add(1);
 a1.add("张三");
 a1.add(3.14);
 //在指定位置添加数据
 a1.add(1,"李四");
 ArrayList a2 = new ArrayList();
 //再指定位置后一次添加多个
 //a2.addAll(2,a1);
 //一次添加多个
 a2.addAll(a1);
 a2.add(99);
 //获取指定下标的元素
 Object v =  a2.get(2);
 System.out.println(v);
 //获取数组长度
 int l = a2.size();
 System.out.println(l);
 //判断数据是否存在,返回布尔值
 boolean b = a2.contains("李四");
 System.out.println(b);
 //寻找指定数据第一次出现的位置
 int l2 = a2.indexOf("张三");
 System.out.println(l2);
 //删除指定数据
 a2.remove("张三");
 //删除指定下标的数据
// a2.remove(5);
 //以字符串形式打印数组
 System.out.println(a2.toString());
 //清空数组
 //a2.clear();
 //更改数据
 a2.set(1,"李五");
 //获取数组长度
int c = a2.size();
 System.out.println(c);
 System.out.println(a2.isEmpty());

LinkedList l = new LinkedList();
l.add("张三");
l.add("张4");
l.add("张5");
l.add("张6");
l.add("张7");
l.add("张8");
l.add("张10");
LinkedList l2 = new LinkedList();
l2.addAll(l);
l2.add(6,"张9");
System.out.println(l2);
l2.addFirst("张2");
l2.addLast("张11");
System.out.println(l2);
//l2.remove("张三");
//l2.removeLast();
//l2.removeFirst();
l2.getFirst();
l2.getLast();
l2.indexOf("张四");
boolean b1 = l2.isEmpty();
boolean b2 = l2.contains("张8");
l2.peek();
l2.peekFirst();
l2.peekLast();
//System.out.println(e);
举报

相关推荐

0 条评论