@LIUHUAN
2019-03-15T22:46:50.000000Z
字数 3756
阅读 894
java
for(表达式1;表达式2;表达式3){
循环语句
}
7.....
举例
// 翻转数组
// 头尾两个指针,交换两个变量的值,向中间移动指针,后面的向前移动,前面的向后移动。
int[] A = new int[N];
// 对A进行赋值
for(int i=0,j = A.length-1;i <j ;i++,j--){
int tmp = A[i];
A[i] = A[j];
A[j] = tmp;
}
// 数组初始化
int A[] ;// 声明数组变量,这时,A=null
int A[] = new int[N];// 声明数组变量,并初始化A为一个大小为N的int数组
// 数组的遍历
for(int i=0;i < A.length;i++){
// visited A[i]
}
// 也可以从尾部向头部遍历
for(int i = A.length-1;i >=0 ;i--){
// visited A[i]
}
// 删除索引为x的元素,x in [0,A.length)
for(int i = x ;i < A.length-1;i++) {
A[i] = A[i+1];
}
// 假设x=2,A=[1,2,3,4,5],删除x所在的元素后,A变成[1,2,4,5,5]
// 最后一个元素还是5但是在逻辑上已经没有意义了,因为A的有效长度为A.length - 1 =4
// 假设向数组里面追加(在末尾之后增加)一个元素x,数组假设为A
int B[] = new int[A.length + 1]; //重新分配一个比A长1的数组
for(int i = 0;i < A.length; i++){
B[i] = A[i]; // 把A元素复制到B中
}
// 循环结束时:i = A.length
B[A.length] = x; // 把x添加到最后一个元素
A = B ;// 这个时候把A重新赋值为一个新的数组,旧的数组,会被回收掉。
// 查找数组中值为x元素所在位置,如果没有x,用-1表示。找到一个就可以
// 假设数组名为A
int index = -1;
for(int i = 0;i < A.length;i++) {
if(A[i] == x) {
index = i;
break;// 找到了数据x,终止循环
}
}
// 打印index,如果没有找到,index=-1 并且i== A.length-1,
// 假设x=2,A=[1,2,3,4,2,-6]
// 那么上述代码执行后,index = 1;因为A[1] = 2
//1.初始化一个ArrayList
ArrayList<Integer> list;// 这个是声明一个ArrayList,并没有初始化,这时list==null
ArrayList<Integer> list = new ArrayList<Integer>(); // 这个是声明并初始化一个int类型的ArrayList,Integer类是int类的包装
// 尖括号里面可以认为和int []A ;这里面的int[]类似,表示里面存放的是int类型的数据
// 表示ArrayList里面存放的数据类型,比如ArrayList<String> 里面存放的额就是String类型的数据
// 2.向ArrayList里面添加元素,使用add方法。
list.add(1);//
list.add(2);// list 里面存放了[1,2]
list.add(3);// list 里面存放了[1,2,3]
// 3.遍历一个ArrayList
for(int i = 0;i < list.size();i++){
int t = list.get(i); // 这里会默认的把Integer变成int类型赋值给t
// 打印t或者其他操作
}
// ArrayList之前的用法
ArrayList list = new ArrayList();
list.add("hello");
list.add("world");
// 这里没有指定ArrayList存放的是什么元素,但是默认的是什么元素都可以存放,需要注意的是,这里存放的元素必须是同一种类型,才有实际意义。
for(int i = 0;i < list.size();i++){
String t = (String)list.get(i);// 如果不是同一种类型的数据,这个语句会出现异常,例如里面有int数据,那么这里就会异常
// visit t
}
LinkedList llist = new LinkedList();
llist.add("zhang");
llist.add("san");
for(int i = 0;i < llist.size();i++) {
String t = (String)llist.get(i);
// visited t
}
// set使用
// 1.初始化set,里面存放的类型是String类型,也可以定义Integer类型
Set<String> set = new Set<String>();
// 2.添加元素
set.add("hello");
set.add("world");
// 3.查询一个元素是否在set里面
boolean exist = set.contains("hello");
// exist = true;
exist = set.contain("java");
// exist = false;
// 4.遍历一个set
// 声明一个迭代器,可以用set.iterator()获取这个迭代器,类似于i=0;i<size;i++
Iterator<String> it = set.iterator();
while(it.hasNext()) { // it.hasNext() 表示是否还有元素没有遍历
String t = it.next(); // it.next()表示当前遍历的元素
System.out.println(t);
}
// 5.删除一个元素
set.remove("hello"); // 可以删除一个不存在的元素
// Map使用
// 1.初始化,需要执行<keyType,valueType>内的两个类型,表示key的类型,value的类型
Map<String,Integer> m = new HashMap<String,Integer>();
// 2.添加key,value对
m.put("zhang",1);
m.put("wang",2);
// m 里面为{"zhang":1,"wang":2}
// 3.删除一个key,value对,
m.remove("zhang");
// m 里面为{"wang":2}
// 4.遍历一个Map
首先获取一个所有的key的集合
Set<String> mset = m.keySet();
通过key来获取value
while(mset.hasNext()) {
String key = mset.next();
Integer t = m.get(key);
}
// 5.判断一个map里面是否有某个key
boolean exist = m.containsKey("hello"); // exist = false;
exist = m.containsKey("wang"); // exist = true;
// 去除数组中出现多次的元素,只保留出现一次的元素
假设输入是int A[] 返回是一个int [];
Set<Integer> set = new HashSet<Integer>();
for(int i = 0;i < A.length;i++) {
set.add(i);
}
int B[] = new int[set.size()];
Iterator<Integer> it = set.iterator();
int i = 0;
while(it.hasNext()) {
B[i] = it.next();
}
// 执行到这里,B就是A去除多次出现的元素后的数组了