1.String
2.Integer
3.java集合
存储多个数组
3.1 为什么使用集合
数组:int[] a = {1,2,3,34};
缺点:长度固定,类型固定,不好检测
3.2 常用集合
接口:collection
import java.util.ArrayList;
import java.util.List;
public class Collection {
public static void main(String[] args){
List<Integer> list = new ArrayList<>();
//增加数据
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//查询,全查询--遍历
for(int i=0;i<list.size();i++){
System.out.println(list.get(i)+"\t");
}
System.out.println();
//foreach
for(int t:list){
System.out.println(t+"\t");
}
System.out.println();
//删除
//list.remove(2)
list.remove(Integer.valueOf(4));
for(int t:list){
System.out.println(t+"\t");
}
System.out.println();
list.set(1,999);
System.out.println(list);
}
}
3.3 List接口
ArrayList LinkedList Vector
3.3.1 ArrayList
3.3.1.1 add()
3.3.1.2 remove()
3.3.1.3 set(index,值)
3.3.1.4 get()
1.for
2.foreach
3.3.1.5 toString
3.3.2删除问题
前移一位
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class Delete {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
list.add(i);
}
System.out.println("");
for(int i = 0;i < list.size(); i++){
int n = list.get(i);
if (n % 5 == 0 || n % 3 == 0){
list.remove(Integer.valueOf(n));
i--;
}
}
迭代器
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
public class Delete {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 100; i++) {
list.add(i);
}
System.out.println("");
Iterator<Integer> it = list.iterator();
while (it.hasNext()) {
int n = it.next();
if (n % 3 == 0 || n % 5 == 0) {
it.remove();
}
}
System.out.println(list);
}
}
4 Array
底层是数组,大小是固定
思路:创建新数组,原来容量1.5,拷贝数据
4.1 创建对象
每次扩容是原大小1.5倍
ArrayList初始大小1.5倍
ArrayList初始值大小:10
private static final int DEFAULT_CAPACITY = 10;
设置初始值,目的减小扩容次数
List<Student>List = new ArrayList<>(200)
4.2.3 set(index,obj)
5 Linklist
查询,修改效率低(数组)List<Integer>list = new ArrayList<>();
删除,添加效率高(链表)List<Integer>list2 = new LinkedList<>();
创建一个20位随机数链表
有一个List集合存入20个数据,随机产生,不能保证数据不重复,排除所有重复选项
package LinkedList;
import java.util.LinkedList;
import java.util.Random;
import java.util.List;
public class Linklist {
public static void main(String[] args) {
List<Integer>list = new LinkedList<>();
Random ran = new Random();
for (int i = 0; i <= 20; i++) {
while(true) {
int n = ran.nextInt(30) + 1;
if(!list.contains(n)) {
list.add(n);
break;//不重复
}
}
}
System.out.println(list);
}
}
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
//利用了set的排他性,不允许有重复
public class SetDemo {
public static void main(String[]args){
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);
}
}
6.Set
有一个list集合,有若干数据有重复数据,去掉重复数据
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class SetDemo2 {
public static void main(String[]args){
List<Integer> list = new LinkedList<>();
list.add(1);
list.add(1);
list.add(3);
list.add(5);
list.add(5);
list.add(6);
list.add(3);
list.add(7);
Set<Integer> set = new HashSet<>();
set.addAll(list);
list.clear();
list.addAll(set);
System.out.println(list);
/*
for (int i=0;i<list.size();i++) {
set.add(list.get(i));
}
System.out.println(set);
list.clear();
for(int t:set) {
list.add(t);
}
System.out.println(set);
*/
/*for (int i=0;i<list.size();i++){
int n = list.get(i);
for(int j=i+1;j<list.size();i++){
if (n==list.get(j)){
list.set(j,9999);
}
}*/
}
}
7.Stack(栈)
LIFO,先进后出