java集合知识整理

概念:

Java类库中为我们提供了很多的"集合类",这些集合类内部采用了不同的“数据 结构”来存储,不同的数据结构,会导致增、删、改、查的性能不同。
常见的数据结构
1).数组;查询快 增删慢
2).链表;增删快 查询慢
3).栈; 后进先出 压栈弹栈
4).队列;先进先出
5).哈希表;查询和增删都快
6).树
在这里插入图片描述

集合

注意:①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。
   ②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。
   ③、集合可以存放不同类型,不限数量的数据类型。
插播小知识:
包装类:
基本数据类型 ----- 包装类型
byte ----- Byte
boolean ----- Boolean
short ----- Short
char ----- Character
int ----- Integer
long ----- Long
float ----- Float
double ----- Double
A).Collection集合:单列集合
|–List集合:1.有序的;2.可以存储重复元素;可以索引操作元素;
|–ArrayList(子类):数组实现
|–LinkedList(子类):链表实现
|–Set集合:1.无序的;2.不能存储重复元素;
|–HashSet(子类):哈希表
|–LinkedHashSet(子类):链表、哈希表。有序的
B).Map集合:双列集合(键值对)
|–HashMap(子类):哈希表实现;
|–LinkedHashMap(子类):链表,哈希表实现

Collection集合_Collection中的常用方法
1).Collection中声明的这些方法在List和Set集合中都会被实现;
2).常用的几个方法:
添加:
public boolean add(E e) : 把给定的对象添加到当前集合中,返回值:对于ArrayList永远返回true; 对于Set,只有当存储重复元素时,才会返回false,存储失败;

删除:
public void clear() :清空集合中所有的元素。
public boolean remove(E e) : 把给定的对象在当前集合删 除。 返回值:删除成功返回true;否则返回:false 注意:如果集合中有多个“重复元素”,只删除第一个。(移除是依赖于:equals()的比较)

判断:
public boolean contains(Object obj ) : 判断当前集合中 是否包含给定的对象。 注意:查找是依赖于:equals()的比较的;
public boolean isEmpty() : 判断当前集合是否为空。

获取:
public int size() : 返回集合中元素的个数。
public Object[] toArray() : 把集合中的元素,存储到数组中。 将集合转换为数组。
public Iterator iterator():获取一个“迭代器”,用于遍历集合。

补充小知识
使用迭代器不能对原对象进行增删操作,否则程序会报错(并发修改异常ConcurrentModificationException)

//定义一个list集合
ArrayList<String> list=new ArrayList<>();
Iterator it=list.iterator();
while(it.hasNext()){ //获取浮标 判断是否有下一个
System.out.print(it.next());//输出
}

补充小知识:
增强for:
是一种循环语句,用于遍历数组、集合。在语法上它比 普通for循环更加简洁。

//快捷键 arr.iter  
//注意增强for底层是迭代器不可以执行增删操作
  int [] arr={2,14,1,3,22,11,4};
        for (int i : arr) {
            System.out.println(i);
        }

List集合:

1).它继承自Collection接口。另外它又新增了一些方法。
2).List集合的特点: 有序的;可以存储重复元素;可以通过"索引"操作元素;
3).新增的常用的方法:
添加 public void add(int index, E element):将指定的元素,添加到该集合中的指定位置上。
修改: public E set(int index, E element) 用指定元素替换集合中指定位置的元素,返回 值的更新前的元素。
删除: public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
获取: public E get(int index) :返回集合中指定位置的元素。
ArrayList(list集合子类):
数组实现,无特有方法。
LinkedList(list集合子类):
链表实现,有一些特有方法。用于模拟栈、队列操作

set集合

特点
1.无序的(指与添加是的顺序不同);2.不能存储重复元素;3.不能通过索引访问。
hashSet(子类):
特点:增删 查询速度较快
注意:某位置添加元素时使用hashCode()方法验证索引位置是否存在,然后使用equse()方法判断元素是否相同。

HashSet<String> set = new HashSet<>();
set.add("张三");
set.add("张三");//错误 不可存储重复 输出只会有一个“张三”
set.add("李四");
for (String s : set) {
            System.out.println(s);// 李四 张三
        }
set.clear();//清空集合
set.iterator();//迭代器 作用遍历

LinkedHashSet(子类):
特点:它是 Set 的特例,链表、哈希表结构。有序的

 LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("张三");
        linkedHashSet.add("李四");
        linkedHashSet.add("王五");
        for (String s : linkedHashSet) {
            System.out.println(s);//张三 李四 王五
        }

Map集合

特点:双列集合 存储两个对象:键值对
HashMap(子类):哈希表实现;

HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("1","张三");//put() 添加元素的方法 “1”是键,“张三”是值
        hashMap.put("2","李四");
        hashMap.put("3","王五");
        hashMap.get("1");//get() 获取指定索引位置的值的方法
        hashMap.remove("2");//remove() 移除指定位置的键和值

遍历的方法有两种:

 Set<String> keySet = hashMap.keySet();//获取键的集合
        for (String s : keySet) {
            System.out.println(hashMap.get(s));
        }
    }
//获取集合中的每一个键值对对象的集合遍历
 Set<Map.Entry<String, String>> entrySet = hashMap.entrySet();
        for (Map.Entry<String, String> s : entrySet) {
            String key=s.getKey();
            String value=s.getValue();
            System.out.println(key+":"+value);
        }

LinkedHashMap(子类):链表,哈希表实现
特点:有序的
无特殊方法,与hashMap遍历方法类似。

发布了8 篇原创文章 · 获赞 0 · 访问量 38

猜你喜欢

转载自blog.csdn.net/FearSun/article/details/105385757