string转list集合_超详细的java集合讲解
1 集合
1.1 为什么会出现集合框架
[1] 之前的数组作为容器时,不能⾃动拓容
[2] 数值在进⾏添加和删除操作时,需要开发者⾃⼰实现添加和删除。
1.2 Collection接⼝
1.2.1 Collection基础API
Java集合框架提供了⼀套性能优良、使⽤⽅便的接⼝和类,它们位于java.util包中。
Collection表⽰集合的根接⼝,可以看成⼀个容器,存储了很多对象,这些对象称为Collection元素。Collection要求元素必须是引⽤数据类型。
Collection 根据其元素的特征可以分为
List接⼝->元素有序、可重复
Set 接⼝-> 元素⽆序、不可重复
思考:Collection提供了具备什么能⼒?=> 对容器增删改查
public
class Test01 {
public class
static void
void main(String[] args) {
public static
public
/
**
* 增:add/addAll
* 删:clear/remove/removeAll/retainAll
* 改:
* 查:contains/constainsAll/size/isEmpty
* 其他:equals
* 遍历:iterator()
*/
Collection col1 = new
new ArrayList();
col1.add("apple"); // Object obj = "apple" 多态
col1.add("banana"); // Integer i = 1; 装箱
// 注意:Collection可以添加任意类型的数据,最好添加统⼀类型的数据⽅便未来统⼀访问。
Collection col2= new
new ArrayList();
col2.add("apple");
col2.add("banana");
// col1.addAll(col2);
//System.out.println(col1);
//col1.clear(); // 清空集合
//ve("apple"); // 移除指定元素
//veAll(col2); // 移除指定集合中的多个元素
/
/ainAll(col2); // 保留指定集合col2中的元素,其他删除
//System.out.println(col1);
//ve(1); // [apple, banana, 2]
//System.out.ains("apple"));
//System.out.ainsAll(col2));
//System.out.println(col1.size()); // 返回元素个数
//System.out.println(col1.isEmpty());
boolean r = col1.equals(col2);
c++string类型boolean
System.out.println(r);
}
}
1.2.2 遍历和Iterable
Iterable 表⽰可遍历的,具备遍历的能⼒。其定义了⼀个⽅法iterator⽤于返回集合上的迭代器,该迭代器⽤于foreach快速遍历。
void main(String[] args) {
static void
public
public static
new ArrayList();
Collection col1 = new
col1.add("apple");
col1.add("coco");
col1.add("banana");
// 遍历集合中的元素
/*
* Object 表⽰迭代元素类型
* item 表⽰迭代变量
* */
// 快速遍历
for (Object item : col1) {
for
System.out.println(item);
}
/
/ 迭代器遍历
Iterator it1 = col1.iterator(); // 返回集合的迭代器
while
while(it1.hasNext()) {
String item = (();
System.out.println(item);
}
// 写法(更节省内存)
for(Iterator it2 = col1.iterator();it2.hasNext();) {
for
String item = (();
System.out.println(item);
}
}
1.3 List接⼝
List 接⼝称为有序的序列,提供了索引(index)对容器中的元素进⾏增、删、改、查。index让List集合中的元素有序、可重复。
1.3.1 List接⼝常⽤⽅法
void main(String[] args) {
static void
public static
public
/**
* 增:add(index,e)/addAll(index,c)/add(e)/addAll(c)/
* 删:remove(index)/clear()/remove(e)/removeAll(c)/retainAll(c)
* 改:set(index,e);
* 查:get(index)/indexOf(e)/lastIndexOf(e)/contains/constainsAll/size/isEmpty * 其他:equals
* 遍历:iterator() / listIterator()
*/
new ArrayList();
List list1 = new
// 【1】添加
// 追加
list1.add("apple");
list1.add("banana");
// 在指定index位置添加元素coco
list1.add(0,"coco");
new ArrayList();
List list2 = new
list2.add(1);
list2.add(2);
list1.addAll(0, list2);
System.out.println(list1);
// 【2】移除
//ve(0);
/
/System.out.println(list1);
// 【3】修改
list1.set(0, 100);
System.out.println(list1);
// 【4】查看元素 可能产⽣IndexOutOfBoundsException
// System.out.(6));
System.out.println(list1.indexOf(200));
// list1.add(2);
// System.out.println(list1.lastIndexOf(2));
}
1.3.2 List接⼝遍历
List接⼝中提供了⼀个listIterator⽅法,返回列表的列表迭代器,属于ListIterator接⼝,提供以任意⽅向(正向、逆向)遍历列表,同时在遍历列表的过程中还可以操作列表。
void main(String[] args) {
static void
public static
public
// List 集合的遍历
List list = new
new ArrayList();
list.add("apple");
list.add("banana");
list.add("coco");
// 【1】 for 循环
int i=0;i<list.size();i++) {
for(int
for
String item = (String) (i);
System.out.println(item);
}
// 【2】 快速遍历
for(Object item:list) {
for
System.out.println(item);
}
// 【3】iterator
Iterator it1 = list.iterator();
while(it1.hasNext()) {
while
System.out.());
}
// 【4】listIterator 获取列表的迭代器
ListIterator it2 = list.listIterator();
// 正向遍历(A)
while(it2.hasNext()) {
while
System.out.());
}
// 逆向遍历(B)
while(it2.hasPrevious()) {
while
System.out.println(it2.previous());
}
// 【5】从指定位置开始迭代(C)
System.out.println("--listIterator(index)--");
ListIterator it3 = list.listIterator(1);
while
while(it3.hasNext()) {
System.out.());
}
}
思考:Iterator和ListIterator区别?
1.4 数据结构(补充知识)
1.4.1 线性表
根据物理空间是否连续,可以把线性表分为数组和链表。
数组:物理上连续、逻辑上也连续的内存空间,通过index来访问元素。
链表:物理上不连续、逻辑上连续的内存空间,也可以通过index来访问元素。
1.4.2 队列
队列是以⼀个⽅向先进先出的数据结构
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论