晨起一刻-码农的每日积累-小代码块-第一期

每日积累,适合码农的日常积累,收录Java、Mybatis、Flutter 、Android、iOS、Vue的精彩瞬间


目前在西瓜视频上免费刊登 Flutter 系列教程,每日更新,欢迎关注接收提醒

【x1】点击查看提示


晨起一刻【2020-09-21】小代码

如何在字符串中获取不同的字符及其数量?

@SpringBootTest
class DemoDistinctCharTests {
    
    

  //日志
  private static final Logger LOG = LoggerFactory.getLogger(DemoDistinctCharTests.class);

  @Test
  void test() {
    
    

    // 问题 如何在字符串中获取不同的字符及其数量?
    String targString = "DemoDistinctCharTests";

    /// ket 为字符 value 为出现的次数
    //  Map 的 key 是不允许重复的,刚好可以对重复的字符进行数量的累加
    Map<Character, Integer> charsWithCountMap = new LinkedHashMap<>();

    for (char c : targString.toCharArray()) {
    
    
      /// Map 的 merge 函数
      charsWithCountMap.merge(c, 1, Integer::sum);
    }
    
    LOG.info(charsWithCountMap.toString());
    // {D=2, e=2, m=1, o=1, i=2, s=3, t=3, n=1, c=1, C=1, h=1, a=1, r=1, T=1}
  }
  
}

小说明
java8对于许多常用的类都扩展了一些面向函数
其中 lambda表达式,方法引用的功能,使得java面向函数编程更为方便。

其中Map.merge方法就是其中一个,merge方法有三个参数,
key:map中的键,
value:使用者传入的值,
remappingFunction:BiFunction函数接口(该接口接收两个值,执行自定义功能并返回最终值)。
当map中不存在指定的key时,便将传入的value设置为key的值,当key存在值时,执行一个方法该方法接收key的旧值和传入的value,执行自定义的方法返回最终结果设置为key的值。


晨起一刻【2020-09-20】小代码

float f=3.4;是否正确?

不正确
3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float
f =(float)3.4; 或者写成float f =3.4F;。

short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?

对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。


晨起一刻【2020-09-19】小代码 几行代码的冒泡排序

冒泡排序核心思想就是:
比较相邻的元素,如果第一个比第二个大,就交换他们两个位置,大的始终保持在右侧。

  /**
   * 冒泡排序方法
   *
   * @param targArr 需要排序的数据
   */
  public static void bubbleSort(int[] targArr) {
    
    

    for (int i = 0; i < targArr.length - 1; i++) {
    
    

      for (int j = 0; j < targArr.length - 1 - i; j++) {
    
    

        int a = targArr[j];

        int b = targArr[j + 1];

        if (a > b) {
    
    
          // 如果左边的数大于右边的数,则交换,保证右边的数字最大

          targArr[j + 1] = a;
          targArr[j] = b;

        }
      }
    }
  }

测试用例

@SpringBootTest
class DemoBubbleSortTests {
    
    

  //日志
  private static final Logger LOG = LoggerFactory.getLogger(DemoBubbleSortTests.class);

  @Test
  void test() {
    
    

    ///定义数据
    int[] testArray = {
    
    5, 2, 9, 8};

    LOG.info("排序前 " + Arrays.toString(testArray));// [5, 2, 9, 8]
    //冒泡排序方法 排序一下
    bubbleSort(testArray);

    LOG.info("排序后 " + Arrays.toString(testArray));//[2, 5, 8, 9]
  }

}

晨起一刻【2020-09-18】代码小片段

在这里插入图片描述


晨起一刻【2020-09-17】代码小片段

在这里插入图片描述
原因分析 在这里

猜你喜欢

转载自blog.csdn.net/zl18603543572/article/details/108673923