Java中集合类

简介: Java中集合类

集合类介绍


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


数组中可以放基本类型与对象。

集合中只能放对象。


集合类都被放在java.util中


Java集合分为Collection和Map



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> 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相似可以看上方


相关文章
|
3月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
266 100
|
3月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
299 101
|
3月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
260 101
|
3月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
299 100
|
3月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
114 4
|
2月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
200 5
|
2月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
106 7
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
193 1
|
2月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
241 1