一.List集合
1.ArrayList就是一个动态的数组
2. LinkedList基于链表的存储结构
特点:
1.ArrayList查询快、增删慢
2.LinkedList查询慢、增删快 List集合是有序的,且元素可以重复
public class Text01 {
public static void main(String[] args){
//List遍历
List<String> list=new ArrayList<>();
list.add("c");
list.add("b");
list.add("a");
list.add("d");
System.out.println(list);
System.out.println(list.get(1));
System.out.println("list遍历集合");
// for (int i=0;i<list.size();i++){
// String s=list.get(i);
// System.out.println(s);
// }
for (String s:list){
System.out.println(s);
}
}
二.Set集合
1.Set集合它所存储的元素是不可重复的,并 且元素都是无序的
2.Set集合不能直接获取某个元素,只能通 过迭代器遍历元素。
3. 通俗的理解为小学生的书包,直接把元素扔进去, 是没有任何顺序的,所以元素不能重复。
public class Text01 {
public static void main(String[] args){
//HashSet
Set<String> set=new HashSet<>();
set.add("z");
set.add("y");
set.add("x");
set.add("z");
System.out.println(set);
System.out.println("Set集合的遍历");
Iterator<String> iterator=set.iterator();
while (iterator.hasNext()){
String s=iterator.next();
System.out.println(s);
}
}
注:List和Set的顶层接口 都是Collection
三.Map
1.基于键值对形式存储的数据结构
2.在Map中key是不允许重复的,value值 是可以重复。
3.Map会把所有的key存放一个set集合中。
public class Text01 {
public static void main(String[] args){
Map<String,Object> map=new HashMap<>();
map.put("name","李四");
map.put("age",20);
map.put("sex","男");
map.put("weight",120);
System.out.println(map);
System.out.println("Map的遍历:");
//获取map中所有ke值的set集合
Set<String> keySet=map.keySet();
Iterator<String> ite=keySet.iterator();
while (ite.hasNext()){
//获取key的值
String key=ite.next();
Object value=map.get(key);
System.out.println(key+"-----"+value);
}
}
}
总结:
四.String类
1.字符串是常量:她们的值在创建之后不能更改,String类定义了一个字符组常量。一旦赋值就不能更改字符串的值
2.字符串修改值的时候,不是修改字符的本身,而是重新修改字符串的地址引用
3.经常需要变化的字符串建议使用 StringBuffer定义:
java有垃圾回收机制,自动释放内存资源
public static void main(String[] args){
/*
1.字符串是常量:她们的值在创建之后不能更改,String类定义了一个字符组常量。一旦赋值就不能更改字符串的值
2.字符串修改值的时候,不是修改字符的本身,而是重新修改字符串的地址引用
3.经常需要变化的字符串建议使用 StringBuffer定义:
java有垃圾回收机制,自动释放内存资源
*/
String str=new String("abc");
//在内存中查找是否存在lucy这个字符串,不存在创建一个lucy字符串,然后把该字符串地址放入s1栈内存中
String s1="lucy";
//在内存中查找是否存在lucy这个字符串,存在创建一个lucy字符串,则把把该字符串地址放入s2栈内存中
String s2="lucy";
System.out.println(s1==s2);
//不是修改s1地址映射的字符串内容,重新在内存中查找字符串,存在就赋值,不存在就创建后赋地址
s1="jack";
// for(int i=0;i<100000;i++){
// s1=s1+i;
// }
// StringBuffer sb1=new StringBuffer("张三");
// sb1.append("xxx");
// System.out.println(sb1);
}