您的位置:首页 > 编程语言 > Java开发

java基础(五),集合,泛型

2016-04-13 15:14 501 查看
ArrayList是一个有序的列表,新增进去的数据会按照顺序排列

优点

1.相比数组来说,长度是可变的

2.可以存放任意类型的数据

3.有更多的API来处理集合里面的数据

4.更高效

不废话,直接上代码,看了代码啥都懂了

ArrayList list = new ArrayList();// 创建一个ArrayList对象
list.add("aaa");// 往list里添加数据
list.add("bbb");
list.add("ddd");
list.add("eee");
for (int i = 0; i < list.size(); i++) {
// 通过get方法来获取list里面的每一条数据,遍历得到
String string = (String) list.get(i);
System.out.println(string);
}
// 对集合里的数据进行修改
list.set(1, "bbbbbb");
// 对集合里的数据进行增加
list.add(2, "ccc");
// 对集合里的数据进行删除
list.remove(4);


HashMap

是使用键值对的形式来存放数据的,不能保证元素的存储顺序

HashMap map = new HashMap();
map.put("zhang", "1234");
map.put("li", "59273957");
map.put("ma", "127253");
System.out.println(map.size());// 输出集合的大小
System.out.println(map.keySet().size());// 输出集合的健的大小
// map.keySet()可以取出map中的键,是一个set集合
for (Object key : map.keySet()) {
System.out.println("key:" + key + ",value:" + map.get(key));
}


以上内容没有使用泛型,其实对程序来说是不好的,效率低,并且没有安全性,下面来加上泛型

首先泛型一定是包装类,eg:Integer、Double、Float…。而不能是 int、double、float…

小例子:用泛型的方法比较任意类型数组的大小

将最大值和最小值封装成一个类,用泛型,Pair.java

package bgzy.javatest.demo5;

/**
* @author ad 把最大值和最小值分装成一个对象
* 类型不确定就使用泛型
*/
public class Pair<T> {//定义成泛型,什么数据类型都可以进行比较
private T min;
private T max;

public T getMin() {
return min;
}

public void setMin(T min) {
this.min = min;
}

public T getMax() {
return max;
}

public void setMax(T max) {
this.max = max;
}

public Pair() {
super();
// TODO Auto-generated constructor stub
}

public Pair(T min, T max) {
super();
this.min = min;
this.max = max;
}

@Override
public String toString() {
return "Pair [min=" + min + ", max=" + max + "]";
}
}


创建一个Calc.java类来进行比较传进来的数组的大小

package bgzy.javatest.demo5;

public class Calc {
public static <T extends Comparable<T>> Pair panduan(T nums[]) {// 传入任意类型的数组
T maxNum = nums[0];
T minNum = nums[0];
for (int i = 0; i < nums.length; i++) {

// if (maxNum < nums[i]) {maxNum = nums[i];}
if (maxNum.compareTo(nums[i]) < 0) {
maxNum = nums[i];
}
// if (minNum > nums[i]) {minNum = nums[i];}
if (minNum.compareTo(nums[i]) > 0) {
minNum = nums[i];
}
}
return new Pair(minNum, maxNum);
}

}


最后一个测试类Test.java

package bgzy.javatest.demo5;

public class Test {
public static void main(String[] args) {
Integer nums[] = { 10, 25, 33, 45, 89, 12, 200, 32, 45, 61, 28 };//定义成Integer类型,泛型只能是包装类
String nums2[] = { "aa", "bb", "gg", "ff", "cc", "hh", "yy", "dd", "ee" };
// Pair pair = Calc.panduan(nums);
Pair<Integer> pair = Calc.panduan(nums);
Pair<String> pair2 = Calc.panduan(nums2);
// System.err.println("max" + pair.getMax() + ",min" + pair.getMin());
System.out.println("max" + pair2.getMax() + ",min" + pair2.getMin());
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息