容器

本文深入探讨了Java中的集合框架,包括List、Set、Map等容器的使用与特性,以及String对象的不可变性与StringBuilder、StringBuffer的高效字符串操作方法。同时介绍了Java中的数组赋值、可变参数列表、格式化输出、迭代器与foreach语法的应用,并对容器的同步与异步特性进行了对比分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String
String对象是不可变的

StringBuilder: Java SE5引入的
insert()
replace()
substring()
reverse()
append()
delete()
toString()

StringBuffer是线程安全的,因此开销较大

打印对象的内存地址,调用Object.toString()

System.out.format() 属于 java.util.Formatter 类
等价于C中的printf,可用于控制格式化输出

%[argument_index$][flags][width][.precision]conversion
默认数据是右对齐的,加”-“改变方向
width:最小尺寸
precision:对String表示输出字符的最大数量,对浮点数表示小数部分要显示出来的位数

类型转换字符:
d:字符
c:Unicode字符
b:Boolean值
s:String
f:浮点数(十进制)
e:浮点数(科学计数)
x:整数(十六进制)
h:散列码(十六进制)
%:字符“%”

String.format()是一个static方法,它接受与Formatter.format()方法一样的参数,但返回一个String对象

数组
在Java中可以将一个数组赋值给另一个数组,其实真正做的只是赋值了一个引用

可变参数列表:
        printArray(Object[] args)
        printArray(Object...args)


容器
注:
同步:线程安全,执行效率低
异步:线程不安全,执行相率高
斜体且有下划线:常用的容器

Collection-----Queue---PriorityQueue
                     |
                     |--List 接口
                     |         |
                     |         |--LinkedList 链表
                     |         |
                     |         |--ArrayList 顺序结构动态数组类  (异步)
                     |         |
                     |         |--Vector 向量  (同步)
                     |         |
                     |         |--Stack 栈
                     |
                     |--Set
                            |
                            |--HashSet  最快
                            |
                            |--TreeSet
                            |
                            |--LinkedHashSet

Map-----------LinkedHashMap  按插入顺序保存
                    |
                    |---HashTable  (同步)
                    |
                    |---HashMap  (异步) 最快
                    |
                    |---TreeMap  升序保存结果
                    |
                    |---WeakHashMap 改进的HashMap

List:
    ArrayList:长于随机访问元素,但是在List中间插入或移除元素较慢
    LinkedList:长于中间插入和删除,随机访问较慢。其特性集较ArrayList更大
    常用方法:
    contains()
    remove()   基于equals()
    indexOf()
    add()
    get()
    subList()
    containsAll()
    addAll()
    removeAll()
    retainAll()  交集
    Collections.sort()
    Collections.shuffle()
    isEmpty()
    clear()
    toArray()

LinkedList:
    getFirst()
    element()
    removeFirst()
    remove()
    addFirst()
    addLast()
    removeLast()

Stack:
    push()
    pop()
    peek()

Set:
    Set具有与Collection完全一样的接口。
    TreeSet将元素存储在红-黑树中
    HashSet使用的是散列函数

Map:
    get()
    containsKey()
    containsValue()

Queue:
    offer()    插入队尾
    peek()    返回队头(不移除)
    element()    同peek()
    poll()    返回队头(移除)
    remove()    同poll()

PriorityQueue

迭代器
Java的Iterator只能单向移动
1)使用方法iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素;
2)使用next()获得序列中的下一个元素;
3)使用hasNext()检查序列中是否还有元素;
4)使用remove()将迭代器新返回的元素删除,调用之前须先调用next()

Iterator<Pet> it = pets.iterator();
while(it.hasNext())
{
    Pet p=it.next();
    it.remove();
}

ListIterator用于各种List类的访问,可双向移动
ListIterator<Pet> it=pets.listIterator();
while(it.hasNext())it.next();
while(it.hasPrevious())it.previous();

foreach 语法可应用于任何Collection对象




    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值