文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
一.Java中数组遍历的几种方法
数组条件
private int size = 0;//逻辑大小
private int capacity = 8;//容量
private int[] array = new int[capacity];
1.创建一个方法用Consumer接口实现遍历
pubilc void foreach(函数式接口)
Consumer使用条件: 一个参数 不需要返回值 提供array[i]
public void foreach(Consumer<Integer> consumer){//Consumer要指定泛型 不能是基本数据类型
for (int i = 0; i < size; i++) {
consumer.accept(array[i]);
}
}
Test1测试
@Test
public void test1(){
DynamicArray dynamicArray = new DynamicArray();
dynamicArray.addList(1);
dynamicArray.addList(2);
dynamicArray.addList(3);
dynamicArray.addList(4);
dynamicArray.foreach((e)->{
System.out.println(e);
});
}
结果
1 2 3 4
2.实现Iterable接口使用迭代器遍历(增强For循环)
实现iterator抽象方法
实现后return new iterator<Integer>返回
@Override
public Iterator<Integer> iterator() {//实现类
return new Iterator<Integer>() {
int i = 0;
@Override
public boolean hasNext() {//有没有下一个元素
return i < size;
}
@Override
public Integer next() {//返回当前元素 并移动到下一个元素
return array[i++];
}
};
}
Test2测试
增强for循环快捷方法 dynamicArray.for自动生成
@Test
public void test2(){
DynamicArray dynamicArray = new DynamicArray();
dynamicArray.addList(1);
dynamicArray.addList(2);
dynamicArray.addList(3);
dynamicArray.addList(4);
for (Integer element : dynamicArray) {//hasNext() nest()
System.out.println(element);
}
}
结果
1 2 3 4
3.实现Stream流的方式遍历
IntStream.of()能把普通数组变成流的方式
注意:如果只使用IntStream.of(array)方法最后遍历会把数组里面有效无效的数都输出
dynamicArray.stream().forEach((element)->{//forEach是流自带的方法
System.out.println(element);
});
结果
1 2 3 4 0 0 0 0 0
所以要使用utils包下的Arrays.copyOfRange()方法把有效值取出来
public IntStream stream(){
return IntStream.of(Arrays.copyOfRange(array,0,size ));
}
结果
1 2 3 4
二. java中无符号右移<<<
移位运算符在程序设计中,是位操作运算符的一种。移位运算符可以在二进制的基础上对数字进行平移。移位运算符有左移 <<,右移 >>,无符号右移 >>> 这几种。
无符号右移运算符
“>>>”:若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0
int[] a;
int i = 0,j = a.length;
int m = (i + j) / 2;//
int n = (i + j) >>> 1;
总结:
一. 代码习惯
1.在写代码判断两数大小时,判断符号左边总是较小的数
二. 心得
1.无