20170825 - A - 集合框架 集合操作 线性表

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
</html>
1 什么时候需要泛型?
操作的对象如集合泛型后。(迭代器便也要泛型,获取的子切片也需要。)
Collection<Integer> c = new ArrayList<Integer>();
Iterator<Integer> it = c.iterator();

2 泛型实际上真的泛型了吗?
并没有,只是加了个判断,如果不属于泛型类型便强转,所以可能会报错。

3 哪些集合可以排序?
List

4 下方代码是否会报错
public class Collections_sort {

public static void main(String[] args) {
// TODO Auto-generated method stub
Collections<Integer> c = new ArrayList<Integer>();
for(int i = 0;i <10;i++){
Random rand = new Random();
c.add(rand.nextInt(100));
}
Collections.sort(c);
System.out.println(c);
}

}
会,①不可定义为Collections,只有定义成Collection,
②sort方法只能对List型数据操作.

5 字符串是按照什么排序?
字符串字符的编码顺序

6 什么类实现Comparable接口,就泛型什么接口.
public class Point implements Comparable<Point>{

}

7 重写comparable方法需注意什么?
由于抽象类中compareTo为泛型方法,因此需定义传入参数类型
方法的返回值为int型数据,大于0为大于。

8 排序后数组的顺序变化吗?还是需要重新赋值给另外一个数组?
变化

9 耦合性是什么?
适应框架的代价

10 建议用哪种自定义排序方式?
不建议实现Comparable接口,建议重写一个比较器。

11 如何重写比较器?
public class Collections_sort4 {

public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> listStr = new ArrayList<String>();
listStr.add("这是一个段字符串。");
listStr.add("这是一个段字符。");
listStr.add("这是一个段字。");

Collections.sort(listStr,new Comparator<String>(){
public int compare(String o1, String o2){
int o1len = o1.length();
int o2len = o2.length();
return o1len - o2len;
}
});

System.out.println(listStr);
}

}
①匿名内部类
②比较器泛型
③重写compare方法(不能直接在类体

12 队列用于?
服务器排队

13 LinkedList实现了Queue吗?队列入队操作是?出队操作是(是否会被删除)?引用队首元素呢?
实现了,ll.offer(),queue.poll()|会,ll.peek()

14 队列可以叠代吗?
可以。

15 如何取出队列中所有元素?
while(queue.size() > 0){
String s = queue.poll();
}

or

//queue.size()实时在变
for(int i = queue.size(),i < 0,i--){
queue.poll();
}

16 栈是什么?它实现了什么类?
是双端队列,Deque.

17 双端队列如何添加去除访问首尾元素?(如何出栈,进栈)
添加首元素:offer("123")/offerFirst("123")/pop()
添加尾元素:offerLast("123")
去除首元素:poll()/pollFirst()/push()
去除尾元素:pollLast()

18 如何遍历栈?
新循环或问取(栈会被清空)

19 哈希表,散列表,HashMap是什么?
查找表(字典)

20 如何定义哈希表?如何插入 key-value对 到哈希表中?
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("one", 1);

21 建议用基本类型接收put的返回值吗?
不建议,返回基本类型引用还好(会自动拆箱),但若无替换值则返回null会导致空指针异常(引用指向对象为空)。

22 Queue是什么?
接口。

23 如何获取查找表指定key的value?
Integer ii = map.get("one");
System.out.println("one:"+ii);

24 map的遍历有几种方式?
迭代key
迭代entry
遍历所有的value

public class Map_iterate {

public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("语文",90);
map.put("数学",91);
map.put("英语",93);
map.put("化学",91);
map.put("物理",99);


/*
* 遍历所有的key
* Set<key> keySet()
* 将当前Map中所有的key存入一个Set集后返回
* 遍历该集合等同遍历所有
*/
Set<String> keySet = map.keySet();
for(String str:keySet){
System.out.println(map.get(str));
}

/*
* 获取每一组键值对
* Set<Entry> entrySet()
* Map将每一组键值对以一个Entryx型的实例保存。
* Entry是Map的内部类,提供了两个常用的方法:getKey(),getValue()
*/
Set<Entry<String,Integer>> entrySet = map.entrySet();
for(Entry<String,Integer> e:entrySet){
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
}


/*
* 遍历所有的value
* 可重复,所以不再像前两个一样用Set
* Collection values()(返回值 调用方法)
* 将当前Map中所有value存储到一个集合后返回
*/
Collection<Integer> values = map.values();
for(Integer value : values){
System.out.println("value:" + value);
}

/*
* 删除某个键值对
* map.remove(key);
*/

map.remove("物理");

Set<String> keySet1 = map.keySet();
for(String str:keySet1){
System.out.println(map.get(str));
}


}

}

25 可能干扰map提取效率的因素是?
hashcode与equals的冲突产生链表
扩容,散列算法中参数变化,散列桶位置也会变化

26 如何创建hashCode方法?
鼠标右键Resource

27 map装载一个键值对的过程是?
首先计算出key值的hashcode值,
按照hashcode值以entry键值对型存储到对应的bucket
若后续元素有相同hashcode的,则判断两个元素是否相等,若相同,则扩展为链表存储。

28 队列与栈分别遵循什么原则?
FIFO,FILO.

29 何时需要泛型?
当类为泛型时。

30 这句话什么含义?
Set<key> keySet()
keySet()方法返回。

——————
比较器的创建,查找表的遍历。

26 未熟练掌握知识点
Map<Character,Integer> map = new HashMap<Character,Integer>();
key及value皆为引用类型

加强for循环
for(Character chara:c)

可以利用Set去重(遇到已录入元素自动跳过)

何时需要泛型?
不用生硬去记,当需要定义类型时便需要泛型(定义传入参数的类型)
Set<Entry> entrySet()

Set<Entry<String,Integer>> entrySet = map.entrySet();

for(Entry<String,Integer> e:entrySet){}
//使用新循环时,需要先定义传入参数类型

posted @ 2017-08-25 23:16  清及  阅读(86)  评论(0)    收藏  举报