@LIUHUAN
2019-03-15T14:46:50.000000Z
字数 3756
阅读 1108
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=nullint 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,数组假设为Aint B[] = new int[A.length + 1]; //重新分配一个比A长1的数组for(int i = 0;i < A.length; i++){B[i] = A[i]; // 把A元素复制到B中}// 循环结束时:i = A.lengthB[A.length] = x; // 把x添加到最后一个元素A = B ;// 这个时候把A重新赋值为一个新的数组,旧的数组,会被回收掉。
// 查找数组中值为x元素所在位置,如果没有x,用-1表示。找到一个就可以// 假设数组名为Aint 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.初始化一个ArrayListArrayList<Integer> list;// 这个是声明一个ArrayList,并没有初始化,这时list==nullArrayList<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.遍历一个ArrayListfor(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来获取valuewhile(mset.hasNext()) {String key = mset.next();Integer t = m.get(key);}// 5.判断一个map里面是否有某个keyboolean 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去除多次出现的元素后的数组了