「不需要索引的场景java」索引适用场景

博主:adminadmin 2022-12-02 00:53:05 67

本篇文章给大家谈谈不需要索引的场景java,以及索引适用场景对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中list、set和map 在什么场景下使用?

list 列表

set 集合

map 映射

从词义上可以看出来它们的大概作用:

列表是顺序存放对象的,可以有相同的对象,通过索引存取;

集合是无序存放对象的,其中不能有重复的对象(唯一的,回忆高中时候数学中学习的集合特性),集合没有索引,只能遍历次存取;

映射,存放的是键与值的映射,其中键是唯一的(不能有重复对象),而值可以有重复的对象,存的时候,需要指定键和对应的值,取的时候可以根据键名取到值,也可以遍历。

至于在什么时候使用,这个是要因地制宜的。

列表,在能直接使用数组的时候,就有使用列表,如一个班的学生的成绩,成绩是可以重复的;

集合,一般用于存放无序的(指顺序不重要)不能重复的对象,如一个班的学生的学号,学号是不能重复的;

映射,用于存放具有对应关系的键值对,如一个班的学生的学号与姓名的映射,每个学号对应了一个学生的姓名,学号不能重复,但是姓名可能会重复;

使用java在一个固定的String里查找指定字符,考虑该字符每次出现位置不同,所以不能用索引。

你看一下下边的代码,是不是你想要的,对于你说的不能用索引,不是很明白

str.indexOf(find) 这个方法可以找出匹配的字符串所在的开始索引啊。是不能用这个方法?

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Line {

public static void main(String[] args) {

String str = "div class=\"inf-pnl-price-detail\""

+ "dl"

+ "dtPrice:/dt"

+ "dd"

+ "div class=\"price price-highlight\""

+ "del class=\"original-price\"US $\\"

+ "span class=\"\" id=\"sku-price\"7.66/span"

+ "span class=\"separator\"//span"

+ "span class=\"unit\"piece/span"

+ "/del"

+ "/div"

+ "/dd"

+ "dtDiscount Price:/dt"

+ "dd"

+ "div class=\"price price-highlight\""

+ "span class=\"currency\" itemprop=\"priceCurrency\" content=\"USD\"US $/span"

+ "span class=\"value\" id=\"sku-discount-price\" itemprop=\"price\"6.89/span"

+ "span class=\"separator\"//spanspan class=\"unit\" piece /span"

+ "span class=\"time-left\"(7 days left )/span" + "/div"

+ "/dd" + "/dl" + "/div";

String find = "6.89";

// 不明白你说的不能用索引是什么意思。

// 如果你肯定这个字符串中只会出现一次,那么用indexof找到索引,是很正常的

int index = str.indexOf(find);

if (index == -1) {

System.out.println("[" + find + "]不存在");

} else {

System.out.println("[" + find + "]存在,在[" + index + " - "

+ (index + find.length()) + "]之间。");

System.out.println(str.substring(index, index + find.length()));

}

// 如果不能保证是只出现一次。

// 这种方法要找出每一个所在的位置,要麻烦一些。

Pattern p = Pattern.compile(find);

Matcher m = p.matcher(str);

ListString list = new ArrayListString();

while (m.find()) {

String group = m.group();

if (!"".equals(group)) {

list.add(group);

}

}

if (list.size() == 0) {

System.out.println("[" + find + "]不存在");

} else {

System.out.println("[" + find + "]存在,共有[" + list.size() + "]个。");

}

}

}

mysql数据库里面,什么样的数据不需要建立索引?

先正面回答你的问题

数据是否重复不是建立索引的重要依据,甚至都不是依据。

只要不完全重复(所有元组的该元素都一样),那么建立索引就是有意义的。

即使当前数据完全重复,也不是不能建立索引,这种情况有点复杂,不细说了。

对于你后面的疑问,可以给你一个如何建立索引的忠告,“如何查就如何建”。

索引的建立,唯一的原因就是为了查询(广义的查询),实际上建立索引会使得数据存储所占空间变大,有时索引所占的空间会查过数据本身的空间。索引的建立也会使得数据插入时变慢,特殊情况下,慢的难以忍受,所以dba的重要工作之一,就是检查索引层级并优化。

索引建立的唯一好处,就是按照索引查询时,变快了。type,status这2个字段是否适合建立索引,就要看你是否要按照这2个字段进行检索。而检索的顺序决定了如何建立索引。

对于索引类型和索引方式,我建议就

normal

btree

就适用于大多数情况。若你参与的是一个大数据处理项目,对数据存储和检索有特别要求,那么需要分析多个层面,比如数据吞吐量、数据的方差、平均差等等很多参数才考虑是否用聚集索引等(mysql好像还没聚集索引),至于是否是唯一索引,我建议不使用,即使能判定数据是唯一的也不要用,全文索引也没有必要。

关于不需要索引的场景java和索引适用场景的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。