Java小记 数组与集合【梳理】

目 录:

数组


集合类
  Collection
   List
    ArrayList & LinkedList
   Set


map


数组

定义
int a[] = {1,2,3};
int a[] = new int[]{1,2,3};

int a[][];
a = new int[2][];
a[1] = new int[2];
a[0] = new int[3];
方法说明
fill(arr, data);填充
fill(arr, from, to, data);填充
arr2 = Arrays.copyOf(arr, length);拷贝。import java.util.Arrays
arr2 = Arrays.copyOfRange(arr, from, to);拷贝。import java.util.Arrays
Arrays.binarySearch(arr, from, to, value);查询。import java.util.Arrays
Arrays.sort(arr)排序。import java.util.Arrays

集合类

Java.lang.Object
Map
Collection
HashMap
TreeMap
Set
List
HashSet
TreeSet
ArrayList
LinkedList

Collection

方法说明
add(E, e)将制定对象添加到集合中
remove(Object o)将指定对象从该集合中删除
isEmpty()返回boolean,判断当前集合是否非空
iterator()返回该Collection的迭代器
size()返回int,元素个数

List

方法说明
get(int index)获取指定位置元素
set(int index, Object o)修改指定位置元素

ArrayList & LinkedList

方法return说明
add(E e)boolean添加e
add(int index, E e)void插入eindex
addAll(Collection<? extends E> c)boolean添加集合c
clear()清空
remove(int index)list[index]移除index处值
removeAll(Collection<?> c)boolean移除集合c
set(int index, E e)e0修改index处值为e,返回修改前值e0
get(int index)e获取index处值
size()Long返回元素个数
isEmpty()boolean判断是否为空
contains(Object o)boolean判断是否包含o
containAll(Collection<?> c)boolean判断是否包含集合c
toArray()Object[]转换为数组
iterator()Iterator返回可迭代对象

Set

  • TreeSet 方法
方法说明
first()返回此Set当前第一个值
last()返回此Set当前最后一个值
comparator()返回此Set的比较器。如自然顺序,return null
headSet(E end)返回一新集合。包含此Set E之前的元素
subSet(E from, E to)返回一新集合。包含此Set元素 :[from, to)
tailSet(E from)返回一新集合。包含此Set from 及之后元素
  • TreeSet 类必须实现 Comparable 接口 compareTo(Object o) 方法

Map

方法说明
put(K key, V value)向集合中添加指定键值对
get(Object key)返回key对应的值,没有则返回null
keySet()返回所有key对象的Set集合
values()返回所有value对象的Collection集合
contiansKey(Object key)判断是否包含指定key的映射关系
contiansValue(Object value)判断是否有key映射到指定value

  • HashMap 类实现的Map集合添加和删除映射关系效率更高。
  • 可通过HashMap类创建Map集合,需要顺序输出时,再创建一个相同映射关系的TreeMap
Map<String, String> map = new HashMap<>();
...
TreeMap<String, String> treemap = new TreeMap<>();
treemap.putAll(map);
Iterator<String> keys = treemap.keySet().Iterator();
...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.javaJava类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的壳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值