String
new String(“abc")
s1 == s2 false
s1.equals(s2) true
String s = “abc”;
包装类型Integer
Integer a = 256;
Integer b = 256;
System.out.println(a == b);
String s1 = "a";
String s2 = "b";
String s3 = "ab";
boolean f1 = (s1 + s2) == s3;
boolean f2 = ("a" + "b") == "ab";
boolean f3 = (s1 + "b") == s3;
System.out.println("f1=" + f1); //true
System.out.println("f2=" + f2); //true
System.out.println("f3=" + f3); //false
String s = new String( “abc”);
String s1 = “abc”;
java集合
存储多个数据
为什么使用集合
数组:
int[] a = {1,2,3,34};
缺点:
长度固定的,类型固定,不好检测。
常用集合
接口: Collection
List接口
ArrayList, LinkedList, Vector
ArrayList
add()
remove()
set(index, 值)
get()
- for
- foreach
toString()
删除的问题
迭代器方案
Iterator<Integer> it = list.iterator(); //拿到迭代器
while(it.hasNext()){ //判断是否有下个
int n = it.next(); //拿到下一个
//System.out.print(n+"\t");;
if(n%3==0|| n%5==0){
it.remove();
}
}
System.out.println(list);
ArrayList
底层是数组,大小是固定。
思路: 创建新数组,原来容5,拷贝数据
创建对象
List<Student> list
=new ArrayList<>();
每次扩容的是原大小1.5被
ArrayList初始值大小:10
设置初始值,目的是减少扩容次数
api
add()
remove()
删除对象,要重写equals方法。
set(index, obj)
LinkedList
查询修改效率低
删除·,添加效率高
任务,定义个LinkedList集合,放入随机(1~100)产生的20个整数。
set
有一个List集合存入20个数据,随机产生,不能保证数据不重复,排除所有重复数据。
Set集合不能保证顺序。
元素中 equals()和hashcode()
Set<Integer> r = new HashSet<>();
Random random = new Random();
while (r.size() < 20) {
int n = random.nextInt(20) + 1;
r.add(n);
}
System.out.println("set:" + r);
有一个list集合,有若干数据有重复的数据,去掉重复数据。
Stack
1+2+3-5+5+8
假设只能输入+ - ,
LIFO(后进先出)
- {
int n = random.nextInt(20) + 1;
r.add(n);
}
System.out.println(“set:” + r);
> 有一个list集合,有若干数据有重复的数据,去掉重复数据。
# Stack
> 1+2+3-5+5+8
>
> 假设只能输入+ - ,
LIFO(后进先出)
![image-20240526170623420](https://img-blog.csdnimg.cn/img_convert/231204098bab3aacbf1d9f10204c2b3a.png)