装箱和拆箱,集合,list,set,map

说道集合不得不说道数组,用来存储一组相同的数据,但是对于数组来说,频繁的增减程序效率太差,只能够从一个数组扩充到另一个数组,

而且由于是连续分布查找效率低下,所有对于今后的存储一般使用集合;

集合分为collection 和map接口;

其中collection接口有有子接口:list和set;

在集合中存储的数据是一组对象,可以是任意一种引用数据类型,没有数组只能存储一组数据类型的限制;

1、装箱和拆箱

对于8种基本数据类型,想要存储到集合中需要转换为包换类;

byte, short ,int ,long ,float, double, boolean, char

对于它们的包装类分别为:

Byte, Short, Integer, Long, Float, Double , Boolean, Character; 

a. 装箱

将8种基本类型转换为转换为包装类,可以用语法:对应的包装类.valueOf(基本类型数据)进行转换;字符串形式也可以;

 

注意虽然基本数据类型转为包装类,如果没有使用new进行构造方法转换,-128-127的数据是在常量池里面,得到的数据地址仍然相等。

 

b. 拆箱

将包装类转换为基本数据类型;

使用语法:包装类对象. 基本类型value()

如果是字符串可以使用:parse.基本类型(字符串),转换为基本类型

 

现在大多数的转型都可以进行自动拆箱装箱,不用进行手动转换。(——注意数组类型不可以自动转换为包装类的数组类型,所有以后使用数组类型应用包装类的数组类型。)

1、list

list数组存放的是有序、不唯一的对象;

list接口的实现类是:arraylist和linklist

a、  arraylist:

特点:不同步,线程不安全,性能好;对于存取适用,查找快,但不利于增删;

可使用普通for,增强for和迭代器循环遍历数组元素;

如果需要在遍历时进行增删操作,应该使用iterator迭代器;

使用实例:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class a1 {
public static void main(String[] args) {
 List l=new ArrayList<>();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 Iterator it=l.iterator();
 while (it.hasNext()) {
  String str = (String) it.next();//一个循环中一般只能出现一次next
  if(str.equals("bb")){
  it.remove();
  continue;
  }
  System.out.println(str);
 }
 System.out.println(l);
}
}

结果:

aa
cc
[aa, cc]

另外:list还有一种迭代器:listiterator,可以向前(previous)和向后取值;

b. linklist

链表集合,有序(指的是存入和取出的顺序一致)不唯一;

特点:增删方便,线程不安全,由于每一次查找都要从头到尾查找,所以查找效率低;

可以使用:普通for,增强for,iterator,进行遍历循环;

 

2、  set

set集合中可以存储无序、唯一的对象;

实现的子类是:hashset;

只能存储一个null;

如果需要对于一个对象中的某一个属性作为唯一的值,需要进行equals和hashcode重写;

遍历循环:增强for、iterator;

主要方法:add()增,remove()删,contain()是否包含某一元素;

 

3、 map

map集合中存储的是一组键值对key和value,它们是一一对应的关系;

key值是唯一的,不能有重复,而value是可以重复的值;

所以map是由set和list组成;

map的实现子类是:hashmap

使用方法有:put()添加键值对,get()通过键来获取值;

有三种视图:

a、  keyset():获取所以的map键,返回set集合;

b、 values():获取所以的值,返回collection;

c、 entryset();键值集,获取键值对;

使用实例:

导入包:

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

代码:

public static void main(String[] args) {
 Map<String, String> map=new HashMap<>();
 map.put("a", "张三");
 map.put("b", "李四");
 map.put("c", "王五");
 //使用键集遍历;
 System.out.println("键集遍历:");
 for (String string : map.keySet()) {
  System.out.println("键:"+string+"值:"+map.get(string));
 }
 System.out.println("值集遍历:");
 for (String string : map.keySet()) {
  System.out.println("值:"+map.get(string));//不能通过值来获得键
 }
 System.out.println("键值对遍历:");
 Set<Entry<String, String>> entrys = map.entrySet();
 for (Entry<String, String> entry : entrys) {
  System.out.println("键:"+entry.getKey()+"值"+entry.getValue());
  
 }
 System.out.println("直接输出map:"+map);
}
}

输出:

键集遍历:
键:a值:张三
键:b值:李四
键:c值:王五
值集遍历:
值:张三
值:李四
值:王五
键值对遍历:
键:a值张三
键:b值李四
键:c值王五
直接输出map:{a=张三, b=李四, c=王五}

当然:也可以使用iterator遍历输出;

 

如何进行数组和集合之间的转换:

a、集合到数组:toArray()方法;

b、数组到集合:Arrays.asList(数组);

转载于:https://www.cnblogs.com/sw-123/p/9339254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java集合是Java中最重要的概念之一,主要用于存储和操作数据。Java中的集合框架提供了多种类型的集合,包括ListSetMap等,每种类型的集合都有其自己的特点和用途。下面是Java集合的一些重要知识点: 1. 集合框架的接口体系:Java集合框架中有多个接口,包括Collection、ListSetMap等。它们之间的关系如下图所示: ![Java集合框架接口体系](https://img-blog.csdn.net/20180519145129679) 2. ListList是有序的集合,可以包含重复元素。常用的List实现类有ArrayList和LinkedList。 3. SetSet是无序的集合,不包含重复元素。常用的Set实现类有HashSet和TreeSet。 4. MapMap是一种键值对的映射表,其中键和值可以是任意对象。常用的Map实现类有HashMap和TreeMap。 5. 迭代器:Java集合框架提供了迭代器来遍历集合中的元素。迭代器可以按顺序访问集合中的元素,并且支持删除操作。 6. 泛型:Java集合框架支持泛型,可以确保集合中只包含特定类型的对象。 7. 自动装箱/拆箱:Java集合框架支持自动装箱拆箱,可以将基本类型转换为对应的包装类型。 8. 并发集合:Java集合框架还提供了一些并发集合,如ConcurrentHashMap和CopyOnWriteArrayList,用于多线程环境中的安全访问。 下面是Java集合知识点的思维导图: ![Java集合知识点思维导图](https://img-blog.csdn.net/20180519145411787)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值