java list装箱,装箱和拆箱,集合,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 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> entrys = map.entrySet();

for (Entry entry : entrys) {

System.out.println("键:"+entry.getKey()+"值"+entry.getValue());

}

System.out.println("直接输出map:"+map);

}

}

输出:

键集遍历:

键:a值:张三

键:b值:李四

键:c值:王五

值集遍历:

值:张三

值:李四

值:王五

键值对遍历:

键:a值张三

键:b值李四

键:c值王五

直接输出map:

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值