Collection
package APIlearn;
import java.util.ArrayList;
import java.util.Collection;
public class collectiontest {
public static void main(String[] args) {
Collection<String> coll=new ArrayList<>();
coll.add("aaa");
coll.remove("aaa");
System.out.println(coll);
//coll.clear();
boolean result =coll.contains("aaa");
System.out.println(result);
Collection<Boys>boysCollection=new ArrayList<>();
Boys b1=new Boys("zhang ",12,167);
Boys b2=new Boys("li ",18,197);
Boys b3=new Boys("wang ",17,187);
boysCollection.add(b1);
boysCollection.add(b2);
boysCollection.add(b3);
Boys b4=new Boys("zhang ",12,167);
boolean result2=boysCollection.contains(b4) ;//要重写
/*
* @Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
Boys boys = (Boys) o;
return age == boys.age && Double.compare(height, boys.height) == 0 && Objects.equals(name, boys.name);
}
* */
System.out.println(result2);
}
}
迭代器:
//遍历
Collection<String> colls=new ArrayList<>();
colls.add("aaa");
colls.add("bbb");
colls.add("ccc");
colls.add("ddd");
//迭代器好像一个箭头,默认指向迭代器的0索引处
Iterator<String> it = colls.iterator();
while(it.hasNext()){
String str= it.next();
//next 获取元素,并移动指针
System.out.println(str);

package APIlearn;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class collectiontest {
public static void main(String[] args) {
Collection<String> coll=new ArrayList<>();
coll.add("aaa");
coll.remove("aaa");
System.out.println(coll);
//coll.clear();
boolean result =coll.contains("aaa");
System.out.println(result);
Collection<Boys>boysCollection=new ArrayList<>();
Boys b1=new Boys("zhang ",12,167);
Boys b2=new Boys("li ",18,197);
Boys b3=new Boys("wang ",17,187);
boysCollection.add(b1);
boysCollection.add(b2);
boysCollection.add(b3);
Boys b4=new Boys("zhang ",12,167);
boolean result2=boysCollection.contains(b4) ;//要重写
/*
* @Override
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
Boys boys = (Boys) o;
return age == boys.age && Double.compare(height, boys.height) == 0 && Objects.equals(name, boys.name);
}
* */
System.out.println(result2);
//遍历
Collection<String> colls=new ArrayList<>();
colls.add("aaa");
colls.add("bbb");
colls.add("ccc");
colls.add("ddd");
//迭代器好像一个箭头,默认指向迭代器的0索引处
Iterator<String> it = colls.iterator();
while(it.hasNext()){
String str= it.next();
//next 获取元素,并移动指针
System.out.println(str);
}
System.out.println();
// System.out.println(it.next());class NoSuchElementException extends RuntimeException {
//调用新的迭代器对象
Iterator<String> it2=colls.iterator();
while(it2.hasNext()){
String str2=it2.next();
if("bbb".equals(str2)){
it2.remove();
}
} System.out.println(colls);
}
}

增强for遍历:
package APIlearn;
import java.util.ArrayList;
import java.util.Collection;
import java.util.stream.Collectors;
public class collectionfortest {
public static void main(String[] args) {
Collection<String>coll=new ArrayList<>();
coll.add("zhang");
coll.add("wang");
coll.add("li");
//增强for,s是第三方变量
for(String s:coll){
System.out.println(s);
}
}
}
Lambda 表达式遍历:
package APIlearn;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
import java.util.stream.Collectors;
public class collectionfortest {
public static void main(String[] args) {
Collection<String>coll=new ArrayList<>();
coll.add("zhang");
coll.add("wang");
coll.add("li");
//利用lambda
coll.forEach(new Consumer<String>() {
@Override
//s:依次表示集合里的每一个数据
public void accept(String s) {
System.out.println(s);
}
});
}
}
简化写法
package APIlearn;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;
import java.util.stream.Collectors;
public class collectionfortest {
public static void main(String[] args) {
Collection<String>coll=new ArrayList<>();
coll.add("zhang");
coll.add("wang");
coll.add("li");
//利用lambda
// coll.forEach(new Consumer<String>() {
// @Override
// //s:依次表示集合里的每一个数据
// public void accept(String s) {
// System.out.println(s);
// }
// });
// coll.forEach((String s)-> {
// System.out.println(s);
//
// });
coll.forEach((s)-> System.out.println(s)
);
}
}
补充java知识点:
1. 为什么 valueOf 对集合特别重要?(缓存机制)
这是你学集合时最该记住的一点。Integer.valueOf() 内部维护了一个缓存池(默认 -128 到 127):
java
Integer a = Integer.valueOf(100);
Integer b = Integer.valueOf(100);
System.out.println(a == b); // true(指向同一对象)
Integer c = Integer.valueOf(200);
Integer d = Integer.valueOf(200);
System.out.println(c == d); // false(超出缓存,新创建对象)
映射到集合场景:如果你的集合(比如 List、Set)里频繁存储小数字(如 ID、状态码、年龄),valueOf 会让它们复用缓存对象,而不是每次都 new 一个新对象。这在数据量大时能显著降低内存占用和 GC 压力。
对比:如果你用 new Integer(100),无论数字大小,每次都在堆里新建对象,集合越大,内存浪费越严重。
2. 除了 Integer,其他包装类也一样
-
Boolean.valueOf(true) —— 直接返回静态常量 Boolean.TRUE,根本不新建对象。
-
Character.valueOf('a') —— 也有缓存池(0~127)。
-
Long.valueOf(100) —— 同样有缓存(-128~127)。
3. 集合里经常遇到的字符串转对象
当你从配置文件、数据库或网络请求中拿到字符串,要放进集合时:
java
String numStr = "123";
List<Integer> ids = new ArrayList<>();
ids.add(Integer.valueOf(numStr)); // 显式转换
注意:valueOf(String) 会抛 NumberFormatException,所以你在集合循环里批量转换时,记得处理异常或确保数据格式干净。
4. 和 parseInt 的区别(面试爱问)
既然学集合,必须分清这两个:
| Integer.parseInt("123") | 基本类型 int | 不能直接放进集合(需手动装箱) |
| Integer.valueOf("123") | Integer 对象 | 直接放进集合(且享受缓存) |
所以在操作集合时,优先用 valueOf,因为它直接返回对象,并且自带缓存福利。
5. 扩展:枚举集合中的 valueOf
如果你学到 EnumSet 或 EnumMap,Enum.valueOf 也很常用:
java
EnumSet<Day> weekend = EnumSet.of(Day.valueOf("SATURDAY"));
它是将字符串转为枚举常量,确保集合里存的是单例对象(枚举天然单例)。
给你一个实战小建议
在遍历集合并进行类型转换时,可以这样写(安全且内存友好):
java
List<String> rawList = Arrays.asList("10", "20", "30");
List<Integer> intList = new ArrayList<>();
for (String s : rawList) {
// 利用 valueOf 的缓存优势
intList.add(Integer.valueOf(s));
}
唯一踩坑点:如果你传 null 给 Integer.valueOf(null),会报 NumberFormatException,所以从集合中取出元素转换前,务必先判空。
List
方法和遍历
package APIlearn;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
public class listtest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);
list.add(1, "qqq");
System.out.println(list);
list.remove(0);
System.out.println(list);
System.out.println();
List<Integer> list2 = new ArrayList<>();
list2.add(1);
list2.add(2);
list2.add(3);
//list2.remove(1);
Integer i = Integer.valueOf(1);
list2.remove(i);
System.out.println(list2);
String result = list.set(1, "qqq");
String result2 = String.valueOf(list2.set(0, 1));
//遍历方式5种
//创建集合并添加元素
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
// list.forEach(new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// });
list.forEach((String s) -> {
System.out.println(s);
}
);
}
}
列表迭代器
| boolean |
如果此列表迭代器在反向遍历列表时具有更多元素,则返回 true 。 |
| E |
返回列表中的上一个元素并向后移动光标位置。 |
package APIlearn;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.function.Consumer;
public class listtest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list);
list.add(1, "qqq");
System.out.println(list);
list.remove(0);
System.out.println(list);
System.out.println();
List<Integer> list2 = new ArrayList<>();
list2.add(1);
list2.add(2);
list2.add(3);
//list2.remove(1);
Integer i = Integer.valueOf(1);
list2.remove(i);
System.out.println(list2);
String result = list.set(1, "qqq");
String result2 = String.valueOf(list2.set(0, 1));
//遍历方式5种
//创建集合并添加元素
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
// list.forEach(new Consumer<String>() {
// @Override
// public void accept(String s) {
// System.out.println(s);
// }
// });
list.forEach((String s) -> {
System.out.println(s);
}
);
//列表迭代器
ListIterator<String> it5=list.listIterator();
while(it.hasNext()){
String str=it.next();
System.out.println(str);
}
}
}





