集合类介绍

数组无法存放映射关系的数据,集合类可以。(集合类又称为容器类)

数组中可以放基本类型与对象。
集合中只能放对象。

集合类都被放在java.util中

Java集合分为Collection和Map
Java中集合类_java

1、List集合

基本操作:

1.索引查看

get(index) 进行索引

2.添加对象

add()

3.获得对应值首次出现位置以及最后出现位置

indexof("")
lastindexof("")

4.获取两下标之间范围

subList(int lindex,int rindex)


ArrayList类

是有序的,可重复的集合,有顺序的索引,并且可以通过索引访问位置,允许重复值的

缺点:插入或删除速度慢。(类似于数组)

具体操作:

1.三种初始化:

1.ArrayLsit list1=new ArrayList();
2.ArrayLsit list1=new ArrayList(5); 确定容量
3.ArrayLsit list1=new ArrayList(list2); a为集合或数组

2.添加

add() 插入对应类型的数据

3.移除

1.remove(index) 删除对应下标
2.remove(“a”) 删除对应内容

4.容量

size() 得到容器中容量

5.替换

set(int index,“a”) 第一个参数是位置,第二个是插入的内容

6.清空

clear() 进行对容器清空

7.索引查看

get(index) 对下标进行索引


LinkedList类

链表结构
优点:插入和删除速度快

1.创建对象

LinkedList< String> list = new LinkedList< String>

2.索引查看

get(index) 下标进行索引

3.获取第一个或者最后一个要查找内容

getfirst()
getlast()

4.加入到首部或者加入到尾部

addfirst()
addlast()

5.移除首部或者尾部

removefirst()
removelast()



2、Set集合

可以依次把多个对象放进Set集合中,这个集合不能记住元素的添加顺序,不包含重复数,最多只包含一个null


HashSet类

使用的是Hash算法,有很好的存取与查找性能

特点:

1.顺序可能发生变化,不与添加顺序同步
2.不是同步的,如果多个线程同时访问或修改一个Hashset,通过代码保证其同步
3.集合可以使null

用hashcode()hashcode 值,根据值来决定它的位置
若两个equals相等,hascode不相等,会存储不同位置
若两项都相等,两个元素相同

1.创建实例

HashSet hs=new Hashset()
HashSet< String> hss=new HashSet< String>();

2.添加

add()

3.使用迭代器进行遍历

Iterator< String>it=hs.iterator(); //需要使用iterator()来得到初始位置,并且应当是相同类型的
it.hasnext() //检查序列中是否还有元素
it.next() //返回下一个元素

while(it.hasnext())
{
	System.out.println(it.next());  //进行遍历
}

TreeSet类

实现set接口和sortedset接口,并且它是自然排序

其中sortedset是set的子接口

使用Comparable接口排序

1.创建实例

Treeset< Double> scores=new Treeset< Double>();

2.返回第一个,最后一个

first();
last();

3.移除第一个或者最后一个

poolfirst()
poollast()

遍历和上面相同

4.是否存在

contains()

5.返回一个集合

subset() //范围之间
headset() //输入的值之前
tailset() //输入的值之后

:SortedSet< Double> score2=score.tailset(90) //就是返回在90之后的

6.查询其中的值,通过索引

score2.toArray //获取数组
score2.toArray[i] //进行索引

7.求其中长度

score2.toArray().length


3、Map集合

HashMap

使用的是哈希算法存取键值对。
其中键为key,值为value

1.创建实例

HashMap users = new HashMap();
HashMap< String,int> users = new HashMap();

2.存入类中

users.put(字符串,整型) //这里存入其中的只是上面1的第二种

3.判断是否包含指定的key

users.containskey(字符串) //返回的是true,false

4.键和值都可以作为一个集合

键:users.keyset()
值:users.values()
注释:可以使用for each来遍历,但是JDK版本需要1.5之后

5.获取迭代器(键值对 对象)中的键和值

首先需要迭代器 Iterator<Entry<String, String>> entries = map.entrySet().iterator();
int key=entries.getkey()
int value=entries.getvalue()

拓展:其中的Entry是Map集合中的键值对 对象 通过键值对可以访问这个键值对中的key或者value


四种遍历

1.在 for 循环中使用 entries 实现 Map 的遍历(最常见和最常用的)

    for (Map.Entry<String, String> entry : map.entrySet()) {
        String mapKey = entry.getKey();
        String mapValue = entry.getValue();
        System.out.println(mapKey + ":" + mapValue);
    }

2.使用 for-each 循环遍历 key 或者 values,一般适用于只需要 Map 中的 key 或者 value 时使用。性能上比 entrySet 较好。

// 打印键集合
for (String key : map.keySet()) {
    System.out.println(key);
}
// 打印值集合
for (String value : map.values()) {
    System.out.println(value);
}

3.使用迭代器(Iterator)遍历

Iterator<Entry<String, String>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
    Entry<String, String> entry = entries.next();
    String key = entry.getKey();
    String value = entry.getValue();
    System.out.println(key + ":" + value);
}

4.通过键找值遍历,这种方式的效率比较低,因为本身从键取值是耗时的操作。

for(String key : map.keySet()){
    String value = map.get(key);
    System.out.println(key+":"+value);
}

TreeMap

可以对键对象进行排序
其余的大致操作与HashMap相似可以看上方


我是长路,感谢您的收看。
欢迎关注我的公众号:长路Java,其中会包含软件安装等其他一些资料,包含一些视频教程以及学习路径分享。
也可以加群:891507813 我们可以一起探讨学习