Java-Arrays

这是不是有点跑偏题了?标题明明是说Arrays的嘛。不急!

数组的创建:

dataType[] arrayRefVar = new dataType[arraySize]; //如果你一开始不确认数据内容,一定要指定类型与长度

OR

dataType[] arrayRefVar = {value0, value1, ..., valuek};// 如果你一开始就确认值,直接初始化也很好呀。

那么有了数组对象之后呢?它长什么样子啊?

注意数组下标和长度。

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      //输出数组元素
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
      // 求和
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      // 找到最大的那个
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);
   }
}
package sf;

public class Array {

	private String[] arr;
	private int index = 0;

	public Array(int max) {
		arr = new String[max];
	}

	private void expandCapacity() {
		String[] tempArr = new String[index * 2];
		System.arraycopy(arr, 0, tempArr, 0, index);
		arr = tempArr;
	}

	public void insert(String element) {
		int size = arr.length;
		if (index >= size) {
			expandCapacity();
		}
		arr[index] = element;
		index++;
	}

	public boolean delete(String target) {
		int x = -1;
		if ((x = contains(target)) != -1) {
			for (int i = x; i < index - 1; i++) {
				arr[i] = arr[i + 1];
			}
			index--;
			return true;
		}
		return false;
	}

	public int contains(String target) {
		int x = -1;
		for (int i = 0; i < index; i++) {
			if (arr[i].equals(target)) {
				x = i;
				return x;
			}
		}
		return x;
	}

	public void show() {
		for (int i = 0; i < index; i++) {
			System.out.print(arr[i] + "  ");
		}

		System.out.println();
		System.out.println("array size is : " + arr.length);

	}

	public static void main(String[] args) {

		Array arr = new Array(3);
		arr.insert("1");
		arr.insert("2");
		arr.insert("3");
		arr.show();

		arr.insert("a");
		arr.show();
		arr.insert("b");
		arr.insert("c");
		System.out.println(arr.contains("c"));
		arr.delete("c");
		arr.show();

	}

}

怎么样?看起来not bad? 可是,有没有想过,数组这么重要,但是操作起来真心太不容易了。如上面的demo,随便往数组中插入一个元素,要写那么多代码,不人道啊。于是,大神为我们考虑了这一点,在util包中提供了一个Arrays的工具类。看了之后顿时有点感动对不对?

来瞧两眼:

Java-Arrays_第1张图片

Java-Arrays_第2张图片

Java-Arrays_第3张图片

    啊,我的妈呀,太好了。数组创建,排序,查找,全都有呀。方法重载多也没事啦,只是针对不同的数据类型而已,用法都一样的。这下妈妈真的不用担心我不会数组操作了。

    Arrays基本的一些用法:http://mouselearnjava.iteye.com/blog/1985990

    如果你觉得还不够,可以看一下apache commons的工具包,那里别有洞天。

    http://commons.apache.org/proper/commons-collections/javadocs/api-release/index.html

    说题外话,由于墙内资源封锁,在百度已经很难找到靠谱齐全的资源了。也有人可能因为英文不好,很少关注官方的文档。然而这样并不利于成长!人家国外的孩子,从小就在好的、正确的引导下长到大,技术比我们强得真不是一丢丢。较之,墙内的孩子,如果要成长为一个程序员,还真的不容易(特别是依赖百度学习)。百度只会给你模棱两可,甚至错误的个人回答,从来不舍得在搜索结果里面推荐一下官方权威。这样小孩就有可能在小的时候就把错误的认识植入脑海,日后要纠正可就难了。我就是其中一个例子,我是工作一年后才发现自己很多想法在很久以前就错了。所以我工作好几年都没怎么写blog分享经验,一方面可能是自己真的没有料写,另一方面确实是担心自己写得不好,误导了别人。于是那般,我不写文章,反而是静化环境了,对么?

你看我,觉得自己写得不好,就没继续自己在那里瞎掰,一般会给出我认为写得更好的链接以供参考。但我又必须写点,因为我如果一点都不写,我该如何在适当的时候把更好的给你呢?我手里的资源那么多,伤痛那么深刻。

再比如说我学数据结构其中的array这茬事。

    以前老是学得不好

    后来我维基百科--》看了youtube的视频--》看jdk[Arrays]的源码--》apache在commons下对应的实现!学有所成。

    还有什么好争议的?我都接受了最好的了!


你可能感兴趣的:(Arrays,commons)