1 /*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5
6 package removesame;
7
8 import java.util.ArrayList;
9 import java.util.List;
10
11 /**
12 *
13 * @author root
14 */
15 public class Main {
16
17 /**
18 * 此方法测试 同一集合中不能再存在重复的元素 否则无法刪除 可以先把每个集合中重复的元素先删除
19 */
20 public static void main(String[] args) {
21 // TODO code application logic here
22
23 //存放aStr和bStr集合重复元素的index
24 List<Integer> aDelIndex=new ArrayList<Integer>();
25 List<Integer> bDelIndex=new ArrayList<Integer>();
26
27
28 List<String> aStr=new ArrayList<String>();
29 List<String> bStr=new ArrayList<String>();
30
31 aStr.add("d");aStr.add("a");aStr.add("c");//aStr.add("d");
32
33 bStr.add("a");bStr.add("b");bStr.add("c");
34
35 String a="";
36 String b="";
37
38
39 //循环遍历两个几何的所有元素
40 for(int i=0;i<aStr.size();i++)
41 {
42 a=aStr.get(i);
43
44 int j=0;
45 for(;j<bStr.size();j++)
46 {
47 b=bStr.get(j);
48
49 if(a.equals(b))
50 {
51
52 System.out.println("刪除索引:i="+i+"\tj="+j);
53 //如果两个值相同,则把他们的index 放进记录重复下标的几何(aDelIndex,bDelIndex)
54 aDelIndex.add(i);
55 bDelIndex.add(j);
56
57 //不需要再比较了,退出本次比较
58 break;
59
60 }
61 }
62
63 }
64
65
66
67
68
69 /*
70 *将记录删除索引的集合里面的值 进行冒泡排序,从小到达排列,否则刪出有可能出错
71 */
72 int temp;
73 for(int i=0;i<aDelIndex.size();i++)
74 {
75 for(int j=0;j<aDelIndex.size()-i-1;j++)
76 {
77 if(aDelIndex.get(j)>aDelIndex.get(j+1))
78 {
79 temp=aDelIndex.get(j);
80 aDelIndex.set(j, aDelIndex.get(j+1));
81 aDelIndex.set(j+1,temp);
82 }
83 }
84 }
85
86
87 for(int num:aDelIndex)
88 {
89 System.out.print(num+"\t");
90 }
91
92 System.out.println();
93
94 for(int i=0;i<bDelIndex.size();i++)
95 {
96 for(int j=0;j<bDelIndex.size()-i-1;j++)
97 {
98 if(bDelIndex.get(j)>bDelIndex.get(j+1))
99 {
100 temp=bDelIndex.get(j);
101 bDelIndex.set(j, bDelIndex.get(j+1));
102 bDelIndex.set(j+1,temp);
103 }
104 }
105 }
106 for(int num:bDelIndex)
107 {
108 System.out.print(num+"\t");
109 }
110
111
112
113
114
115 int k=1;
116
117 boolean f=false;
118
119 //删除aStr中重复的元素
120
121 //第一次刪出后,因为几何的索引会全部提前一个,所以都要刪出aStr.remove(i-1)
122 for(int i:aDelIndex)
123 {
124 if(f)
125 {
126 aStr.remove(i-k);
127 k++;//第一次减一 第一次减二 ……
128 }
129 else
130 {
131 aStr.remove(i);
132 f=true;
133 }
134 }
135
136
137
138 f=false;
139
140 //重置 k
141 k=1;
142 //刪出bStr中重复的元素
143 for(int j:bDelIndex)
144 {
145 System.out.println("j:"+j);
146 if(f)
147 {
148 bStr.remove(j-k);
149 k++;
150 }
151 else
152 {
153 bStr.remove(j);
154 f=true;
155 }
156 }
157
158
159
160
161 //打印
162 System.out.println("----------------------------------------------");
163 System.out.print("aStr:");
164 for (String s:aStr) {
165 System.out.print(s+"\t");
166 }
167
168 System.out.println();
169 System.out.println("----------------------------------------------");
170 System.out.print("bStr:");
171 for (String s:bStr) {
172 System.out.print(s+"\t");
173 }
174 System.out.println();
175
176
177 }
178
179 }
感觉做的很烦,不知道有没有更好的解决办法
分享到:
相关推荐
交集表示两个集合共有的元素集合,用符号"A∩B"表示;并集表示两个集合所有元素的集合,用"A∪B"表示;补集是集合与其全集除去相同元素后的剩余部分,用"uC A"表示。此外,还有集合的运算性质,例如交集的幂等性、...
例如,求解集合的交集、并集或补集时,需要清楚哪些元素同时存在于两个集合中,哪些只存在于其中一个,以及哪些不在任何一个集合中。通过练习这些题目,学生可以加深对集合理论的理解,提高在实际问题中的应用能力。
集合间的关系包括包含关系(一个集合的所有元素都在另一个集合内,记作A⊆B或B⊇A)和相等关系(两个集合包含相同的元素,记作A=B)。空集∅是任何集合的子集,也是非空集合的真子集。此外,集合的运算主要包括交集...
集合有两个关键性质——确定性和互异性。确定性意味着集合内的元素是明确的,不存在模糊不清的情况;互异性则指集合中的元素都是独一无二的。 2. **集合与元素的关系**:元素与集合之间的关系可以用“属于”或“不...
比如,集合{1, 2, 3}与{3, 1, 2}代表的是同一个集合,尽管元素的顺序不同。 在题目中,我们看到了几个例子来检验对象是否构成集合。例如,选项①是可以构成集合的,因为满足确定性和互异性,所有距离原点O为1的点...
通过观察和思考,学生会发现集合的并集运算类似于实数的加法运算,而交集则类似于实数的乘法,因为交集只包含两个集合共有的部分。在实际应用中,比如在平面几何或数据分析中,这些概念极其重要。 教学重点是理解和...
4. 交换集合:使用std::swap函数可以交换两个集合的内容,例如`std::swap(set, other)`。 5. 清楚集合:使用clear函数可以清楚集合中的所有元素,例如`other.clear()`。 std::set的优点是: * 自动排序:std::set...
- **并集**:两个集合的所有元素组合在一起形成的集合。 - **交集**:两个集合共有的元素组成的集合。 - **差集**:从一个集合中去掉另一个集合的元素后剩下的元素组成的集合。 7. **教学目标与重点** 教学目标...
而交集指的是两个集合共有的元素。这两种集合操作在Venn图中有直观的表示,它们帮助学生形象化地理解集合间的关系。比如,通过观察Venn图中重叠部分,学生可以清楚地看到交集的元素,而非重叠部分则表示补集的元素。...
函数是两个集合之间的一种规则,它将一个集合的每个元素唯一映射到另一个集合的元素。理解集合及其运算是理解函数、解析几何、代数以及更高级数学概念的基础。 集合的性质,如确定性、独立性和互异性,确保了集合...
函数是数学中至关重要的概念,它是描述两个集合之间特定关系的工具,通过函数,我们可以理解变量间的依赖关系。在描述函数的概念时,我们首先要明确的是集合的基本概念。集合是由一定范围内的确定对象构成的整体,...
### JavaSE中的数组集合与链表...通过上述分析,我们可以清楚地看到链表集合相较于数组集合的优势所在,特别是在频繁插入和删除操作的场景中。链表集合提供了一种更为灵活的数据管理方式,能够有效提高程序的运行效率。
根据集合的定义,我们可以知道,网中的“大鱼”如果能够明确定义清楚哪些鱼属于“大鱼”的范围,那么它们是可以构成一个集合的。但是需要注意的是,这里的“大鱼”必须有一个清晰明确的标准,例如体重超过一定数值的...
例如,集合{1, 2, 3}与{3, 2, 1}虽然元素相同,但排列顺序并不影响它们作为同一个集合的事实,这体现了集合的无序性。 在实际应用中,我们经常使用特定的符号来表示常见的数集,例如: - N代表自然数集(包含0的...
- **交集**(∩):两个集合的交集是由同时属于这两个集合的所有元素组成的集合。 - **补集**(′):对于一个集合来说,它的补集是指不属于该集合的所有元素的集合。 ### 示例分析 假设集合A={1, 2, 3},集合B={2...
- 一个集合的子集是指包含在原集合中的所有元素的集合,例如集合`{1, 2, 3}`的子集有`{}`, `{1}`, `{2}`, `{3}`, `{1, 2}`, `{1, 3}`, `{2, 3}`和`{1, 2, 3}`,总共8个。 3. 集合的交集与并集操作: - 交集`A ∩ ...
4. 集合的等价性:理解集合的相等性至关重要,两个集合相等当且仅当它们包含相同的元素,例如,集合{1,2}与集合{(1,1),(2,2)}不相等,因为后者是有序对的集合,而前者是单个数字的集合。 5. 变式理解:在实际...
这种题型主要考察对集合中元素的理解和操作,例如例1中,通过分析集合A的元素和集合B的定义,确定B中的元素个数。解答这类问题的关键是明确集合的代表元素,即理解集合中元素的性质和构成规则。 第二种题型涉及函数...
- 通过具体的例题解析,我们可以看到如何应用这些概念和性质来解决问题,例如求两个集合的并集、交集或补集,以及判断集合间的关系。 通过这样的复习,学生将能够熟练掌握集合的基本概念,理解和应用集合的运算,...
通过这个性质,我们可以清楚地理解两个集合间的关系如何通过集合并、交、差的运算来表示。反演律的公式`UAB = UU - (UA ∩ UB)`是解决涉及集合关系转换问题的利器。 紧接着,容斥原理成为了课件的下一个讨论焦点。...