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


相关文章
|
2天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
|
20天前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
41 17
|
12天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
21 2
|
11天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
16天前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
16天前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
34 2
|
16天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
16天前
|
Java 开发者
|
21天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。